PHP大数据数组循环,PHP遍历数组

PHP 编程中常用 for、foreach、each()、list() 对数组进行遍历。

for 循环遍历数组

使用 for 循环遍历数组的一个例子如下:

$fruits = array("lemon", "orange", "banana", "apple");

for ($i=0; $i < count($fruits); $i++) {

echo current($fruits) . " ";

echo $fruits[$i] . "
";

}?>

以上程序的执行结果如下:

lemon lemon

lemon orange

lemon banana

lemon apple

从结果可知,这种使用 for 循环遍历数组的形式没有改变数组的内部指针。

foreach 遍历数组

示例如下:

$array = [0, 1, 2];

foreach ($array as &$val){ // 遍历数组

echo $val;

}

?>

运行以上程序的输出结果为:

012

再给出一个示例:

$array = [0, 1, 2];

foreach ($array as &$val){

var_dump(current($array)); // 遍历数组, 使用current()输出数组指针指向的当前单元的值

}

?>

在 PHP 7 中运行以上程序的输出结果为:

int(0) int(0) int(0)

说明 PHP 7 没有改变数组内部的指针。

而在 PHP 7 之前的版本中则会输出:

int(1) int(2) bool(false)

说明 PHP 7 之前的版本在进行 foreach 循环时会改变数组内部的指针。

在使用 foreach 循环遍历数组的时候,foreach 是对数组的备份进行操作,在循环内部修改数组不会对循环之外访问数组有影响。示例如下:

$arr = array(0, 1, 2);

foreach ($arr as $val){

$val = $val*2; // 元素值乘以2

}

print_r($arr);

?>

运行程序,输出结果是:

Array

(

[0] => 0

[1] => 1

[2] => 2

)

如果是按照引用循环,那么在循环内部对数组做的修改会影响数组本身。示例如下:

$arr = array(0, 1, 2);

foreach ($arr as &$val){

$val = $val*2; // 元素值乘以2

}

print_r($arr);

?>

运行以上程序的结果为:

Array

(

[0] => 0

[1] => 2

[2] => 4

)

each() 和 list() 函数

each() 函数返回数组中当前的键值并将数组指针向前移动。在执行 each() 之后,数组指针将停留在数组中的下一个元素或者当碰到数组结尾时停留在最后一个元素。如果要再用 each 遍历数组,就必须使用 reset()。

each() 的使用示例如下:

$info = array("C语言中文网", "PHP教程", "http://c.biancheng.net/php/", "8年", "严长生");

$val1 = each($info); //指针向后移动一步

print_r($val1);

echo current($info) . "\n"; //当前指针指向值

$val2 = each($info);

print_r($val2);

echo current($info) . "\n";

?>

执行以上程序的结果如下:

Array

(

[1] => C语言中文网

[value] => C语言中文网

[0] => 0

[key] => 0

)

PHP教程

Array

(

[1] => PHP教程

[value] => PHP教程

[0] => 1

[key] => 1

)

http://c.biancheng.net/php/

each() 函数和 list() 函数结合可以遍历数组,示例如下:

$info = array(

"website" => "C语言中文网",

"course" => "PHP教程",

"url" => "http://c.biancheng.net/php/",

"age" => "8年",

"author" => "严长生"

);

while( list($key, $val) = each($info) ) {

echo "$key => $val\n";

}

?>

执行以上程序的结果为:

website => C语言中文网

course => PHP教程

url => http://c.biancheng.net/php/

age => 8年

author => 严长生

也可以使用 list() 将数组的值分别赋给变量,示例如下:

$info = array("C语言中文网", "PHP教程", "http://c.biancheng.net/php/", "8年", "严长生");

list($website, $course, $url, $age, $author) = $info;

echo $website . "\n" . $course . "\n" . $url . "\n" . $age . "\n" . $author;

?>

执行以上程序的输出结果为:

C语言中文网

PHP教程

http://c.biancheng.net/php/

8年

严长生

注意以下例子:

$info = array("C语言中文网", "PHP教程", "http://c.biancheng.net/php/", "8年", "严长生");

list($arr[0], $arr[1], $arr[2]) = $info;

print_r($arr);

?>

在 PHP 5 中的输出结果是:

Array

(

[2] => http://c.biancheng.net/php/

[1] => PHP教程

[0] => C语言中文网

)

在 PHP 7 中执行以上程序,输出结果为:

Array

(

[0] => C语言中文网

[1] => PHP教程

[2] => http://c.biancheng.net/php/

)

PHP 7 改变了 list() 赋值的顺序,由原来的倒序赋值改成了正序赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值