php中foreach循环遍历二维数组
Posted 空眠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中foreach循环遍历二维数组相关的知识,希望对你有一定的参考价值。
最近在用tp3.2框架,在查询的时候用到了select(),这条语句返回的是二维数组,所以在对返回的数据做处理时,遇到了些麻烦,百度了下foreach,终于用foreach解决了数据的筛选问题
(因为不知道该怎么设置where条件,设置只显示Jdate字段中今天以后的数据,所以只能在select查询后的数据中进行筛选..基础没大佬,真的挺麻烦)
进入正题
官方文档中给了foreach的两种用法
foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement
第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。
来看第二种,代码如下
1 $a = array( 2 "one" => array(1,2,3,4), 3 "two" => array(5,6,7,8), 4 "three" => array(\'a\',\'b\',\'c\',\'d\') 5 ); 6 foreach ($a as $k => $v) { 7 echo $k . \'<br>\'; 8 print_r($v); 9 echo \'<br>\'; 10 foreach ($a[$k] as $index => $value) { 11 echo $k . \'<br>\'; 12 echo $index . \'<br>\'; 13 echo $value . \'<br>\'; 14 } 15 }
可以看到,我们设置了一个二维数组$a,并且设置了索引,部分输出如下
第一行:可以看到$k对应的就是第二维数组的索引,比如第一条数组的“one”
第二行:$v对应的是第二维的数组(因为不能直接用echo输出,在这里使用了print_r),比如第一条数据的array(1,2,3,4),
foreach中嵌套的那一层循环中,$a[$k]表示的就是$v,这里写$a[$k]和写$v输出结果都是一样的,因为表示的也是同样的意思
第三行:$k仍旧是第二维数组的索引
第四行:$index是第二维数组数据的索引,隐式定义的,从0开始
第五行:$value是第二维数组的数据
接下来就是重复的输出了
可以看到foerach的确是个很强大的函数,上面是没有定义第二位数组的数据索引的情况,那如果第二位数组的数据也定义了索引呢,其实都一样,foreach语句也相同
$b=array ( \'0\' => Array ( \'jid\' => 10,\'j名\' => 10,\'jabstract\' => 10,\'jprovider\' => 10,\'jintroduction\' => \'厉害人物\'), \'1\' => Array ( \'jid\' => 8 ,\'j名\' => 8, \'jabstract\' => 8, \'jprovider\' => 8, \'jintroduction\' => \'厉害人物\') );
1 foreach ($b as $k => $v) { 2 echo $k.\'<br>\'; 3 print_r($v); 4 echo \'<br>\'; 5 foreach ($b[$k] as $index => $value){ 6 echo $index.\'<br>\'; 7 echo $value.\'<br>\'; 8 } 9 }
输出跟上面的也是一样的原理
注意使用utf-8格式,要不然输出的时候会乱码
都是些很简单的东西啦,不过我还是花了好久才弄明白,可能脑回路跟大家不太一样,搜索到的文章都没能和我的节拍
十二月了,18年最后一个月,今年过的好快
2018-12-02
以上是关于php中foreach循环遍历二维数组的主要内容,如果未能解决你的问题,请参考以下文章