PHP获取二维数组中某一列的值集合

PHP还是比较常用的,于是我研究了一下PHP二维数组。在处理php数组的时候,有一种需求特别的频繁,如下二维数组:

1
2
3
4
5
6
7
8
9
10
$arr = array(
1=>array(
‘id’ => 5,
‘name’ => ‘张三’
),
2=>array(
‘id’ => 6,
‘name’ => ‘李四’
)
);
目的就是要取到key为name的集合,得到这个结果:

1
2
3
4
$arr2 = array(
0=>‘张三’,
1=>‘李四’
);
这里有几种方法:

1:最简单的,foreach遍历数组:

1
2
3
foreach ($arr as $key => $value) {
$arr2[] = $value[‘name’];
}
2:代码量稍微少一点的代码,使用了 array_map 这个php方法:

1
a r r 2 = a r r a y m a p ( ′ a r r a y s h i f t ′ , arr2 = array_map('array_shift', arr2=arraymap(arrayshift,arr);
意为把 a r r 数 组 的 每 一 项 值 的 开 头 的 值 移 出 , 并 返 回 被 移 出 的 每 一 项 值 中 被 移 出 的 值 , 注 意 此 时 新 数 组 arr数组的每一项值的开头的值移出,并返回被移出的每一项值中被移出的值,注意此时新数组 arrarr2的键仍是原数组$arr的键

2.1:在方法2的基础上,可以稍微开一下脑洞,如果需要获取的是二维数组的每一项的开头列或结尾列,也可以这样做:

1
2
a r r 2 = a r r a y m a p ( ′ r e s e t ′ , arr2 = array_map('reset', arr2=arraymap(reset,arr);
a r r 2 = a r r a y m a p ( ′ e n d ′ , arr2 = array_map('end', arr2=arraymap(end,arr);
哈哈,也是很方便的

3:还可以使用 array_reduc e方法,不过代码略多,不过这个方法的想象空间(针对别的数组取值操作)还是蛮大的:

1
a r r 2 = a r r a y r e d u c e ( arr2 = array_reduce( arr2=arrayreduce(arr, create_function(’$result, v ′ , ′ v', ' v,result[] = $v[“name”];return r e s u l t ; ′ ) ) ; a r r a y r e d u c e 方 法 用 回 调 函 数 迭 代 地 将 对 数 组 的 值 进 行 操 作 , 而 c r e a t e f u n c t i o n 用 于 一 个 匿 名 方 法 做 回 调 用 , 这 个 匿 名 方 法 的 参 数 result;')); array_reduce方法用回调函数迭代地将对数组的值进行操作,而create_function用于一个匿名方法做回调用,这个匿名方法的参数 result;));arrayreducecreatefunctionresult为上一次迭代产生的值, v 是 当 前 的 值 , 内 部 实 现 既 为 获 取 到 数 组 v是当前的值,内部实现既为获取到数组 varr每一项的”name”的值并push到新$result数组;

4:最后这个终极方法实在是太爽了,一个方法就搞定,而且非常灵活:

1
a r r 2 = a r r a y c o l u m n ( arr2 = array_column( arr2=arraycolumn(arr, ‘name’);
第二个参数为想要获取的那一列的键名,是不是很方便呢,不过这个方法有个限制,就是php版本必须 >= 5.5.0,在陈旧项目中使用这个方法还是得斟酌一下哈

PS: php中遍历二维数组的几种方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

<?php //使用for循环遍历 $arr2=array(array("张三","20","男"),array("李四","25","男"),array("王五","19","女"),array("赵六","25","女")); echo "性别"; for($i=0;$i<4;$i++){ echo ""; for($j=0;$j<3;$j++){ echo ""; } echo ""; echo "
"; } echo "
姓名年龄
"; echo $arr2[$i][$j]; echo "
"; ?>

//使用foreach遍历

<?php $arr = array('one'=>array('name'=>'张三','age'=>'23','sex'=>'男'), 'two'=>array('name'=>'李四','age'=>'43','sex'=>'女'), 'three'=>array('name'=>'王五','age'=>'32','sex'=>'男'), 'four'=>array('name'=>'赵六','age'=>'12','sex'=>'女')); foreach($arr as $k=>$val){ echo $val['name'].$val['age'].$val['sex']."
"; } echo "

"; ?>

<?php $arr = array('one'=>array('name'=>'张三','age'=>'23','sex'=>'男'), 'two'=>array('name'=>'李四','age'=>'43','sex'=>'女'), 'three'=>array('name'=>'王五','age'=>'32','sex'=>'男'), 'four'=>array('name'=>'赵六','age'=>'12','sex'=>'女')); foreach($arr as $key=>$value){ foreach($value as $key2=>$value2){ echo $value2; } echo "
"; } ?>
### 回答1: 要获取二维数组的某一个数组,可以使用以下代码: ```c++ int myArray[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; int* mySubArray = myArray[1]; // 获取第二个数组(数组下标从0开始) // 输出第二个数组的所有元素 for (int i = 0; i < 4; i++) { Serial.println(mySubArray[i]); } ``` 在这个例子,`myArray` 是一个3行4列的二维数组。我们想要获取第二个数组(即下标为1的数组),所以使用 `myArray[1]` 来获取它。这里需要注意的是,`myArray[1]` 返回的是一个指向整型数组的指针,因此可以将其赋给 `int*` 类型的变量 `mySubArray`。 接下来,我们可以使用 `for` 循环遍历 `mySubArray` 的所有元素,并输出它们的。在本例,输出结果应该是: ``` 5 6 7 8 ``` ### 回答2: 要在Arduino获取二维数组的某一个数组,需要按照以下步骤进行。 首先,定义一个二维数组,例如: int myArray[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; 上面的例子是一个3x4的二维数组,其包含了12个元素。 接下来,要获取某一个数组,可以使用二维数组的索引。索引用来指定数组的位置,以便访问和修改元素。 例如,要获取第二个数组(索引为1): int* targetArray = myArray[1]; 在上面的代码,myArray[1]选择了数组myArray的第二个数组,然后将其赋给指针targetArray。现在,targetArray指向了myArray的第二个数组。 为了进一步操作该数组,可以使用数组的索引进行访问或修改元素。例如,要访问第二个数组的第三个元素(索引为2): int element = targetArray[2]; 上面的代码将targetArray[2]的赋给变量element。现在,element包含了myArray的第二个数组的第三个元素的。 通过以上步骤,我们可以在Arduino获取二维数组的某一个数组。 ### 回答3: 要获取二维数组的某一个数组,可以使用Arduino的语法来实现。首先,需要定义一个二维数组,例如int array[3][4],表示有3行4列的数组。接下来,可以通过指定行数和列数的方式来获取特定的数组。 例如,如果想获取第2行的数组,可以使用array[1]来访问。这样,就可以得到第2行的整个数组。 如果要获取特定位置的元素,例如获取第3行第2列的元素,可以使用array[2][1]来获取。这里的数字2表示第3行,数字1表示第2列。这样就可以获取到对应位置的元素。 总结起来,要获取二维数组的某一个数组,可以通过指定行数和列数的方式来获取整个数组,或者通过指定行数和列数来获取特定位置的元素。这样,就可以在Arduino方便地处理二维数组的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值