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

有一个二维数组,如下:

$arr = array(
  0 => array(
    'id' => 1,
    'a'  => 'xxxx',
    'b'  => 'abc',
  ),
  1 => array(
    'id' => 2,
    'a'  => 'yyyy',
    'b'  => 'abcd',
  ),
  2 => array(
    'id' => 4,
    'a'  => 'zzzz',
    'b'  => 'abcde',
  ),
);

现在我想将索引为‘id’的值取出来,组成一个一维数组,即array(1,2,4)。如果按照以前的写法,使用foreach,然后一个一个的array_push。虽然这样也能实现,但无疑十分影响性能,因为使用 PHP 原生的函数肯定比循环效率高。 

1.使用array_map,代码如下:

$ids = array_map('array_shift',$arr);

这种方法只适合取数组第一个索引的数据,因为array_shift是一个回调方法,它的作用是删除数组中的第一个元素,并返回被删除元素的值。

2.还有一种是使用array_column(),它可以返回输入数组中某个单一列的值,不过这个方法对PHP版本有要求(PHP > 5.5.0):

$ids = array_column($arr,'id');

这种办法无疑效率更高了。

附:

如果我想以‘id’为键值,并取其对应的‘a’的数据,组成一个一维数组,则可以这么做:

$newArr = array_reduce($arr, create_function('$v,$w', '$v[$w["id"]]=$w["a"];return $v;'));

array_reduce() 函数向用户自定义函数发送数组中的值,并返回一个字符串。它还可以设置第三个参数,表示初始值,但在PHP 5.3.0 之前的版本只支持整数。

如果需要获取的是二维数组的每一项的开头列或结尾列,也可以这样做:

?

1

2

$arr2 = array_map('reset',$arr);

$arr2 = array_map('end',$arr);

哈哈,也是很方便的

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

?

1

$arr2 = array_reduce($arr, create_function('$result, $v', '$result[] = $v["name"];return $result;'));

array_reduce方法用回调函数迭代地将对数组的值进行操作,而create_function用于一个匿名方法做回调用,这个匿名方法的参数$result为上一次迭代产生的值,$v是当前的值,内部实现既为获取到数组$arr每一项的”name”的值并push到新$result数组;

### 回答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、付费专栏及课程。

余额充值