php中常用的数组操作函数(1/8)

 更新时间:2016年11月25日 15:07  点击:1573

数组是一组有某种共同特性的元素,包括相似性和类型。
每个元素由一个特殊的标识符来区分,称之为key,而每个key都有一个value
1.创建数组的两种方式:
1.1 用array()函数

 代码如下 复制代码

<?php
$usernames = array ('Alerk', 'Mary', 'Lucy', 'Bob', 'Jack', 'John', 'Mark' );
foreach ( $usernames as $name )
{
echo $name . '<br/>';
}
?>

output
Alerk
Mary
Lucy
Bob
Jack
John
Mark

1.2 用range()函数

 代码如下 复制代码

<?php
$numbers = range ( 0, 10 );
foreach ( $numbers as $num )
{
echo $num . '<br/>';
}
$letters = range ( 'a', 'z' );
foreach ( $letters as $letter )
{
echo $letter . '<br/>';
}
?>

output
0
1
2
3
4
5
6
7
8
9
10
a

c
d
e
f
g
h
i
j
k
l
m

o

q
r

t
u
v
w
x
y
z

2.循环访问数组元素的两种方式:
2.1 for循环

 代码如下 复制代码

<?php
//range的第三个参数表示步长
$numbers = range(1,10,2);
for($i = 0;$i<count($numbers); $i ++)
{
echo $numbers[$i].'<br/>';
}
?>

output
1
3
5
7
9

在php中如何来理解作用域呢,下面我们来介绍一下关于局部变量:在函数内部声明的变量。全局变量: 在函数外部声明的变量,作详细的说明

7.2.8局部变量转换成全局变量

 代码如下 复制代码

<?php

$a = 5;

function funcChangeValue()

{

    global $a;

    $a = 10;

}

 

funcChangeValue();

 

echo $a;

?>
 

output

10

 

 

7.2.9超级全局变量$GLOBALR的使用

 代码如下 复制代码

<?php

$GLOBALS['a'] = 5;

function funcChangeValue()

{

    $GLOBALS['a'] = 10;

}

 

funcChangeValue();

 

echo $GLOBALS['a'];

?>
 

Output

10

所谓PHP的魔术函数,简单的说就是在PHP中具有特定名称——都是用两个下划线开头的,并且PHP解释器会在运行到某一个时机的时候自动查找并运行的方法。最常见的魔术函数当然是构造函数方法:__construct了。

在 PHP 中的方法调用是这样工作的。首先,PHP 解释器在类上查找方法。如果方法存在,PHP 就调用它。如果没有,那么就调用类上的魔术函数 __call(如果这个方法存在的话)。如果 __call 失败,就调用父类方法,依此类推。

这样红口白牙的说似乎有点太变态了,我们还是举个例子吧,看如下代码:

 代码如下 复制代码

 class test{
public function __construct(){
echo "this is construct!n";
}
}
……

在这个测试类test中,只有个构造函数输出一些可有可无的垃圾字符,别的什么都没有;

这时候我们,把它实例化,并且调用一个原子弹的方法,你猜他会怎么样呢?我们立马就这样做,看着:

 代码如下 复制代码

$send = new test();
$send-> atomBomb();

结果是可想而知的,他一定会告诉你没有这个方法的——咱们的确没有这个原子弹的方法!错误信息如下:
Debug Error: test.php line 9 – Call to undefined method test::atomBomb()

那么我们把这个类修改一下,加上一个__call方法,看看怎么样呢:

 代码如下 复制代码

……
class test{
public function __construct(){
echo "this is construct!n";
}

public function __call($name,$arg){
echo “function name:”,$name,”n arg:”.$arg;
}
}
……

重复上边的调用方式:
$send = new test();
$send-> atomBomb(‘ab’,9);

这次看到的结果肯定是和上次不一样的。结果如下:

this is construct! //这个是构造函数自己输出的

//下边这些是__call函数输出的

 代码如下 复制代码
function name:atomBomb
arg:Array

并且我们也很容易的看出,__call两个参数,第一个参数:调用的方法名,第二个参数:调用方法时候输入的参数(这个地方是个数组)。

说这么多不知道你明白没有,我想你要是明白的话,你一定会问这个东西有个什么鸟用呢?就是我们能够用来干什么呢?

那我给你一个用它的思路吧——学以致用嘛!试想,你如果把一个数据库中的所有表都作为一个个对象,并且对其进行CURD操作,你需要写多少个类呢?当然要是你的数组库只有两个表,你完全可以告诉我,只有两个类!但是要是有108个表呢(你例如dede就是108个表),手工输入108个类?显然不科学,21世纪什么最贵?——时间!

我们完全可以写一个类,其余的然他自动创建,我在IBM找了段代码,并且精简了一下,大家可以看看,这个可是高级工程师写的东西啊。

 

 代码如下 复制代码
class DBObject{
private $id = 0;
private $table;
private $fields = array();
function __construct( $table, $fields ) {
$this->table = $table;
foreach( $fields as $key )
$this->fields[ $key ] = null;
}
function __call( $method, $args ) {
if ( preg_match( "/set_(.*)/", $method, $found ) ) {
if ( array_key_exists( $found[1], $this->fields ) ) {
$this->fields[ $found[1] ] = $args[0];
return true;
}
}
else if ( preg_match( "/get_(.*)/", $method, $found ) ) {
if ( array_key_exists( $found[1], $this->fields ) ) {
return $this->fields[ $found[1] ];
}
}
return false;
}
function insert() {
global $db;
$fields = $this->table."_id, ";
$fields .= join( ", ", array_keys( $this->fields ) );
$inspoints = array( "0" );
foreach( array_keys( $this->fields ) as $field )
$inspoints []= "?";
$inspt = join( ", ", $inspoints );
$sql = "INSERT INTO ".$this->table." ( $fields ) VALUES ( $inspt )";
$values = array();
foreach( array_keys( $this->fields ) as $field )
$values []= $this->fields[ $field ];
$sth = $db->prepare( $sql );
$db->execute( $sth, $values );
$res = $db->query( "SELECT last_insert_id()" );
$res->fetchInto( $row );
$this->id = $row[0];
return $row[0];
}</code>
 
//下边删除了3个方法分别是更新update,删除一个,删除全部(战地注)
}
$book = new DBObject( 'book', array( 'author',
'title', 'publisher' ) );
$book->delete_all();
$book->set_title( "PHP Hacks" );
$book->set_author( "Jack Herrington" );
$book->set_publisher( "O'Reilly" );
$id = $book->insert();
echo ( "New book id = $idn" );
$book->set_title( "Podcasting Hacks" );
$book->update();
$book2 = new DBObject( 'book', array( 'author',
'title', 'publisher' ) );
$book2->load( $id );
echo( "Title = ".$book2->get_title()."n" );
$book2->delete( );……
恒等计算符,和比较运算符号“==”的区别是 “==”不会检查条件式的表达式的类型,恒等计算符会同时检查表达式的值与类型。

这主要和php是无类型语言有关,比如 NULL,FALSE,array(),”",0,”0″这几个值如果用==他们是相等的,但是你如果判断出某个值真正的返回值呢,就可以用 ===
$a = 0;
$b = FALSE;
$a === FALSE 不成立,但 $b === FALSE成立,如果是==, $a == FALSE 和 $b == FALSE都成立

===运算符还是很有用的,php有些内置函数成功会返回某个值,失败会返回false,假如成功了但返回的是”"或者0之类的空值你怎么判断成功或者失败呢?这是就可以用 === ,它可以区分变量类型。

参考:

比较运算符

例子 名称 结果
$a == $b 等于 TRUE,如果 $a 等于 $b。
$a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。(PHP 4 引进)
$a != $b 不等 TRUE,如果 $a 不等于 $b。
$a <> $b 不等 TRUE,如果 $a 不等于 $b。
$a !== $b 非全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进)
$a < $b 小与 TRUE,如果 $a 严格小于 $b。
$a > $b 大于 TRUE,如果 $a 严格 $b。
$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。

如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。此规则也适用于 switch语句。

 代码如下 复制代码

<?php

var_dump(0 == "a"); // 0 == 0 -> true

var_dump("1" == "01"); // 1 == 1 -> true

var_dump("1" == "1e0"); // 1 == 1 -> true

switch ("a") {

case 0:

    echo "0";

    break;

case "a": // never reached because "a" is already matched with 0

    echo "a";

    break;

}

?>

文章重点讲到了关于foreach循环和list循环语句的用法,好了下面我们就来看实现吧,费话也不说多了有需要的同学可以参考一下。

最近买了本php和mysql web开发,看到数组循环语句。值得自己关注下,特此留点字迹,以便以后读阅。

一般foreach用的比较多

 代码如下 复制代码

<?php
    $price=array('apple'=>10,'orange'=>20,'banner'=>30);
    foreach($price as $key=>$value)
    {
        echo $key.'=>'.$value.'<br>';
    }
    echo '<br>';
?>

还有个更高级和常见的方法

 代码如下 复制代码

<?php
    $shuiguo=array('apple'=>10,'orange'=>20,'banner'=>30);
   
    while(list($changpin,$jiage)=each($shuiguo))
    {
        echo "$changpin=>$jiage".'<br>';
    }
?>

以前还真没怎么关注下,今天自己动手,还不错,又了解新的东西了,还是自己太菜了,哎

list()函数可以用来一个数组分解成一系列的值,允许为新变量命名。不懂list的
http://www.111cn.net/phper/24/032a7c95555c423729b071aef4afd3c4.htm

两段代码输出是一样。

需要注意的是,当使用each()函数时候,数组将记录当前元素。如果希望在相同的脚本中使用两次该数组。就需要使用reset()降当前元素重新设置到数组开始处。

 代码如下 复制代码

<?php
    $price=array('apple'=>10,'orange'=>20,'banner'=>30);
    foreach($price as $key=>$value)
    {
        echo $key.'=>'.$value.'<br>';
    }
    echo '<br>';
    reset($price);
    while(list($key,$value)=each($price))
    {
        echo "$key=>$value","<br>";
    }
?>

这样就可以依然使用数组$price咯。 

[!--infotagslink--]

相关文章

  • php svn操作类

    以前我们开发大型项目时都会用到svn来同步,因为开发产品的人过多,所以我们会利用软件来管理,今天发有一居然可以利用php来管理svn哦,好了看看吧。 代码如下 ...2016-11-25
  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • php数组操作 键名比较 差集 交集赋值

    本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
  • C#二维数组基本用法实例

    这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php curl模拟post请求和提交多维数组的示例代码

    下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <&#63;php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
  • C#数组的常用操作方法小结

    Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • C#操作config文件的具体方法

    这篇文章介绍了在C#中对config文件的操作,有需要的朋友可以参考一下...2020-06-25
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • python自动化办公操作PPT的实现

    这篇文章主要介绍了python自动化办公操作PPT的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-05
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07