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

原文地址:https://www.cnblogs.com/imper/p/10055368.html

时间: 2024-08-05 17:50:22

php中foreach循环遍历二维数组的相关文章

javascript增加Array的each方法 循环遍历多维数组

由于ECMA提供遍历数组的方法forEach()只能遍历一维数组,没有提供循环遍历多维数组的方法,所以我们自己来实现一个each()方法,来遍历多维数组. <script charset=utf-8 type=text/javascript> /*var arr = [1,2,3,[4,[5]]]; arr.forEach(function(item,index,arr){ alert(item); }); */ //模拟ECMA forEach  循环遍历多维数组 var arr = [1,

遍历二维数组

package zuoye; public class zuoye0110 { public static void main(String[] args) { // TODO 自动生成的方法存根 //遍历二维数组 int[][]a={{12,23,45,78,43},{97,435,78,9,45,423},{45,7,4,32}}; int sum =0; for(int b=0;b<a.length;b++){ for(int c=0;c<a[b].length-1;c++){ sum+

一个for循环打印二维数组

#include<stdio.h> #define MAXX 2 #define MAXY 3 void printarray() { int Arr[MAXX][MAXY] = {1,2,3,4,5,6}; for(int i = 0;i< MAXX*MAXY;i++) { printf("%d\n",Arr[i/MAXY][i%MAXY]); ///注意,一直没管MAXX什么事,在计算这一类的时候,最容易出问题 } } 一个for循环打印二维数组

Undefined offset原因以及解决办法-php利用for遍历二维数组方法-二维数组怎么遍历

<?php $arr3 = [ [1,2,3], [4,5,6,7], [8,9,10,11,12], ]; $len = count($arr3); $num2 = 0; $zong = 0; for($i = 0; $i < $len; $i++) { $tem = $arr3[$i]; $len2 = count($tem); for($j = 0; $j < $len2; $j++) { $num2 += $tem[$j]; $zong++; } } echo "<

JavaSE7基础 遍历二维数组 for循环

版本参数:jdk-7u72-windows-i586注意事项:博文内容仅供参考,不可用于其他用途. 代码 class Demo{ public static void main(String[] args){ //该二维数组有三个不同长度的一维数组. int[][] myArr={ {1,2,3,4}, {4,5,6}, {1,23,45,67,66} }; printArray2(myArr); } public static void printArray2(int[][] myArray)

C#中如何获取一个二维数组的两维长度,即行数和列数?以及多维数组各个维度的长度?

如何获取二维数组中的元素个数呢? int[,] array = new int[,] {{1,2,3},{4,5,6},{7,8,9}};//定义一个3行3列的二维数组int row = array.Rank;//获取维数,这里指行数int col = array.GetLength(1);//获取指定维度中的元素个数,这里也就是列数了.(0是第一维,1表示的是第二维)int col = array.GetUpperBound(0)+1;//获取指定维度的索引上限,在加上一个1就是总数,这里表示

JS 数组(遍历 二维数组)

<script> // var arr =Array(); // arr[0] = 'aaa'; // arr[1] = 'bbb'; // arr[6] = 333; // arr.push('11111'); // arr.forEach(function(v,k){ // alert(v); // }); //第一种遍历 //var arr=Array(); //arr[0]=1; //arr[1]=2; //arr[2]=3; //arr[4]='aaaa'; 2与4之间会显示一个un

从txt文件中读取数据放在二维数组中

1.我D盘中的test.txt文件内的内容是这样的,也是随机产生的二维数组 /test.txt/ 5.440000 3.4500006.610000 6.0400008.900000 3.0300000.140000 2.7400008.920000 7.2900002.580000 7.4300001.850000 6.1300001.350000 4.280000 ... ... 2.在我的test.cpp中添加头文件,即可使用FILE类来读取txt文件中的数据 #include <stdi

5.2多重循环和二维数组

一.多重循环嵌套1.循环可以任意次数嵌套2.外层循环每执行一次,里层循环就执行一遍 二.二维数组1.定义:一维数组中存放的也是数组2.声明:int[][] nums = new int[5][5];3.使用:nums[0][0] = 1; 我们可以将第一个下标理解为行数,第二个下标理解为列数 三.引用数据类型和基本数据类型的区别1.基本数据类型存放的是数据,引用数据类型存放的是内存地址2.基本数据类型赋值的话传递的是数据,而引用数据类型传递的是地址 四.例子 package com.demo10