博客列表 >PHP数组的定义访问与遍历

PHP数组的定义访问与遍历

知行合一
知行合一原创
2020年07月19日 14:33:11827浏览

PHP数组的定义

以下都是创建/定义一个数组的方式

一维数组

  1. $goods=['J20','战斗机',9999];
  1. $goods=[0=>'J20',1=>'战斗机',2=>9999];
  1. $arr=[];
  2. $arr[]=10;
  3. $arr[]='小明';
  4. $arr[]='male';
  5. $arr[]=20;
  1. $duanyu=array('id'=>'20','name'=>'duanyu','age'=>'26');
  1. $arr2=[];
  2. $arr2['id']=20;
  3. $arr2['name']='小红';
  4. $arr2['age']='18';

二维数组

  1. $arr3=[
  2. 0=>['id'=>10,'name'=>'乔峰','age'=>30],
  3. 1=>['id'=>20,'name'=>'段誉','age'=>28],
  4. 2=>['id'=>30,'name'=>'虚竹','age'=>26]
  5. ];
  6. /*可以简写为
  7. $arr3=[
  8. ['id'=>10,'name'=>'乔峰','age'=>30],
  9. ['id'=>20,'name'=>'段誉','age'=>28],
  10. ['id'=>30,'name'=>'虚竹','age'=>26]
  11. ];
  12. */
  13. printf('<pre>%s</pre>',print_r($arr3,true));
  14. echo $arr3[1]['name'];

数组的遍历

指针方法(较少使用)

  1. $arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];
  2. //current 获取指针当前位置的数组元素的值
  3. //key 获取指针当前位置的数组元素的键
  4. //访问完成后指针自动后移
  5. printf ('[\'%s\']=>%s<br>',key($arr),current($arr));
  6. next($arr); //手动移动指针后移
  7. printf ('[\'%s\']=>%s<br>',key($arr),current($arr));
  8. prev($arr);//向前移动
  9. printf ('[\'%s\']=>%s<br>',key($arr),current($arr));
  10. end($arr);//直接到最后一个元素
  11. printf ('[\'%s\']=>%s<br>',key($arr),current($arr));
  12. next($arr); //手动移动指针后移
  13. printf ('[\'%s\']=>%s<br>',key($arr),current($arr)); //没值了,
  14. reset($arr); //指针复位
  15. printf ('[\'%s\']=>%s<br>',key($arr),current($arr));

while循环

  1. $arr=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男'];
  2. while(true) //while(current($arr))
  3. { printf('[\'%s\']=>%s<br>',key($arr),current($arr));
  4. if(next($arr)){
  5. continue;
  6. }else{
  7. break;
  8. }
  9. };

for循环(很少使用)

  1. for($i=0;$i<count($arr);$i++)
  2. { printf('[\'%s\']=>%s<br>',key($arr),current($arr));
  3. next($arr);
  4. }

foreach输出(首选)

foreach(数组变量 as key键 => 值) 输出,不用指针复位,自动后移。

  1. reset($arr);
  2. foreach($arr as $key=>$value ){
  3. //如果用不到key的话,可以删除
  4. //printf ('[\'%s\']=>%s<br>',$key,$value);
  5. echo "['{$key}']=>{$value}<br>";
  6. }

foreach输出(数组里面还有数组)

  1. $arr2=['id'=>10,'name'=>'段誉','age'=>26,'sex'=>'男','wife'=>['木婉清','钟灵','王语嫣',]];
  2. foreach($arr2 as $key=>$value ){
  3. echo is_array($value)? print_r($value,true) : "['{$key}']=>".$value.'<br>';
  4. }
  5. echo '<hr>';

foreach输出二维数组

  1. $arr3=[];
  2. $arr3[]=['id'=>10,'name'=>'乔峰','age'=>30];
  3. $arr3[]=['id'=>20,'name'=>'段誉','age'=>28];
  4. $arr3[]=['id'=>30,'name'=>'虚竹','age'=>26];
  5. // print_r($arr3);
  6. foreach($arr3 as $user ){
  7. foreach($user as $key=>$value ){
  8. echo "['{$key}']=>{$value}<br>";
  9. }
  10. }

foreach通过键名输出

  1. foreach($arr3 as $user ){
  2. printf('id=%s,姓名=%s,年龄=%d',$user['id'],$user['name'],$user['age']);
  3. echo '<br>';
  4. }

list解构/解析数组

数据不多 用结构输出。

  1. $arr3=[];
  2. $arr3[]=['id'=>10,'name'=>'乔峰','age'=>30];
  3. $arr3[]=['id'=>20,'name'=>'段誉','age'=>28];
  4. $arr3[]=['id'=>30,'name'=>'虚竹','age'=>26];
  5. // list('id'=>$id,'name'=>$name,'age'=>$age)=['id'=>10,'name'=>'乔峰','age'=>30]; //前后格式对应
  6. // echo $id,$name,$age;
  7. echo '<hr>';
  8. foreach($arr3 as list('id'=>$id,'name'=>$name,'age'=>$age) ){
  9. printf('id号=%s,姓名=%s,年龄=%d',$id,$name,$age);
  10. echo '<br>';
  11. }

总结:

数组定义有多种方式,根据实际情况使用不同的方式。遍历时优先使用foreach方式和list解析。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议