php中foreach循环遍历二维数组

最近在用tp3.2框架,在查询的时候用到了select(),这条语句返回的是二维数组,因此在对返回的数据作处理时,遇到了些麻烦,百度了下foreach,终于用foreach解决了数据的筛选问题express

(由于不知道该怎么设置where条件,设置只显示Jdate字段中今天之后的数据,因此只能在select查询后的数据中进行筛选..基础没大佬,真的挺麻烦)数组

进入正题框架

官方文档中给了foreach的两种用法ide


foreach 语法结构提供了遍历数组的简单方式。foreach 仅可以应用于数组和对象,若是尝试应用于其余数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:函数

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 而且数组内部的指针向前移一步(所以下一次循环中将会获得下一个单元)。spa

第二种格式作一样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key3d


来看第二种,代码以下指针

 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,而且设置了索引,部分输出以下code

第一行:能够看到$k对应的就是第二维数组的索引,好比第一条数组的“one”orm

第二行:$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