php如何遍历多重数据 php如何遍历多重数据类型

PHP 数组遍历方法大全(foreach,list,each)

在PHP中数组分为两类:

成都创新互联公司专注于企业成都全网营销、网站重做改版、贺兰网站定制设计、自适应品牌网站建设、成都h5网站建设商城建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为贺兰等各大城市提供网站开发制作服务。

数字索引数组和关联数组。

其中数字索引数组和C语言中的数组一样,下标是为0,1,2…

而关联数组下标可能是任意类型,与其它语言中的hash,map等结构相似。

下面介绍PHP中遍历关联数组的三种方法:

方法1:foreach

复制代码

代码如下:

?php

$sports

=

array(

'football'

=

'good',

'swimming'

=

'very

well',

'running'

=

'not

good');

foreach

($sports

as

$key

=

$value)

{

echo

$key.":

".$value."br

/";

?

输出结果:

football:

good

swimming:

very

well

running:

not

good

方法2:each

复制代码

代码如下:

?php

$sports

=

array(

'football'

=

'good',

'swimming'

=

'very

well',

'running'

=

'not

good');

while

($elem

=

each($sports))

{

echo

$elem['key'].":

".$elem['value']."br

/";

?

方法3:list

each

复制代码

代码如下:

?php

$sports

=

array(

'football'

=

'good',

'swimming'

=

'very

well',

'running'

=

'not

good');

while

(list($key,

$value)

=

each($sports))

{

echo

$key.":

".$value."br

/";

?

PHP遍历多维数组

你的意思是用户输入nickname 比如输'user2' 然后你这边取user2对应的password吗?

$data = [

'user'=[

"0a8a5986a6c18920fd456fdfbb048913"=[

"nickname"="user1",

"userName"="username",

"passWord"="password",

"status"=1,

],

"0ffb201c2335a784abd19c2985797711"=[

"nickname"="user2",

"userName"="username",

"passWord"="password",

"status"=1,

],

]

];

//第一种情况是user数组里有多个叫user2的nickname,这样查出的password也会有多个,所以就需要循环来处理了

$nickname='user2';//这里是用户输入的值

$password=[];

foreach ($data['user'] as $val){

if($val['nickname']==$nickname){

$password[]=$val['passWord'];

}

}

print_r($password);

//第二情况就是user数组里只会有一个叫user2的nickname,这样只会查出一个password

$nickname='user2';//这里是用户输入的值

$user=array_column($data['user'],null,'nickname');

$password=$user[$nickname]['passWord'];

echo $password;

PHP 怎么样遍历

第一、foreach()

foreach()是一个用来遍历数组中数据的最简单有效的方法。

?php

$urls= array('aaa','bbb','ccc','ddd');

foreach ($urls as $url){

echo "This Site url is $url! br /";

}

?

显示结果:

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

第二、while() 和 list(),each()配合使用。

?php

$urls= array('aaa','bbb','ccc','ddd');

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

echo "This Site url is $val.br /";

}

?

显示结果:

?

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

第三、for()运用for遍历数组

?php

$urls= array('aaa','bbb','ccc','ddd');

for ($i= 0;$i count($urls); $i++){

$str= $urls[$i];

echo "This Site url is $str.br /";

}

?

显示结果:

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

这几种遍历数组的方法哪个更快捷些呢,下面做个简单的测试就明白了

=========== 下面来测试三种遍历数组的速度 ===========

一般情况下,遍历一个数组有三种方法,for、while、foreach。其中最简单方便的是foreach。下面先让我们来测试一下共同遍历一个有50000个下标的一维数组所耗的时间。

?php

$arr= array();

for($i= 0; $i 50000; $i++){

$arr[]= $i*rand(1000,9999);

}

function GetRunTime()

{

list($usec,$sec)=explode(" ",microtime());

return ((float)$usec+(float)$sec);

}

######################################

$time_start= GetRunTime();

for($i= 0; $i count($arr); $i++){

$str= $arr[$i];

}

$time_end= GetRunTime();

$time_used= $time_end- $time_start;

echo 'Used time of for:'.round($time_used, 7).'(s)br /br /';

unset($str, $time_start, $time_end, $time_used);

######################################

$time_start= GetRunTime();

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

$str= $val;

}

$time_end= GetRunTime();

$time_used= $time_end- $time_start;

echo 'Used time of while:'.round($time_used, 7).'(s)br /br /';

unset($str, $key, $val, $time_start, $time_end, $time_used);

######################################

$time_start= GetRunTime();

foreach($arr as$key= $val){

$str= $val;

}

$time_end= GetRunTime();

$time_used= $time_end- $time_start;

echo 'Used time of foreach:'.round($time_used, 7).'(s)br /br /';

?

测试结果:

Used time of for:0.0228429(s)

Used time of while:0.0544658(s)

Used time of foreach:0.0085628(s)

结果表明,对于遍历同样一个数组,foreach速度最快,最慢的则是while。从原理上来看,foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反。原因应该是,foreach是PHP内部实现,而while是通用的循环结构。所以,在通常应用中foreach简单,而且效率高。在PHP5下,foreach还可以遍历类的属性。

希望能够喜欢。


本文标题:php如何遍历多重数据 php如何遍历多重数据类型
转载源于:http://scyanting.com/article/docccss.html