我有一个函数,它返回一个数组,其中的值是如下所示的数组:我想忽略键并直接提取值。如果没有for循环,我怎么能做到这一点?返回的函数只有一个键,但键(本例中为2)可以是可变
Array ( [2] => Array ( [productID] => 1 [offerid]=>1)
预期结果:
Array ( [productID] => 1 [offerid]=>1)
至少有三种方法可以做到这一点:
使用current
函数,但要确保数组指针位于数组的开头:
$array = Array (2 => Array ( 'productID' => 1, 'offerid' => 1));
$cur = current($array);
var_dump($cur, $cur['offerid']);
接下来是array_values
函数,它将为您提供带有数字键的值数组,从0
开始
$array = Array ( 2 => Array ( 'productID' => 1, 'offerid' => 1));
$av = array_values($array);
var_dump($av[0], $av[0]['offerid']);
第三种选择是使用array_shift
,此函数将返回数组的第一个元素,但要小心,因为它会减少原始数组:
$array = Array ( 2 => Array ( 'productID' => 1, 'offerid' => 1));
$first = array_shift($array);
var_dump($first, $first['offerid']);
如果要获取数组的当前值,可以使用current()
,假设数组指针位于正确的位置。如果只有一个值,那么这应该可以正常工作。
http://php.net/manual/en/function.current.php
我认为Devon的答案对你有效,但如果不行,你可以试试
$arr = array_column($arr, $arr[2]);
如果您总是需要主数组的第二个索引,如果您需要所有索引,请使用
array_map()
,
像array_map('array_map', $arr);
这样的东西应该起作用。