PHP:忽略键并提取数组的值

时间:2015-12-23 06:56:41

标签: php arrays multidimensional-array

我有一个函数返回一个数组,其中值是一个如下所示的数组:我想忽略该键并直接提取值。如果没有for循环,我怎么能这样做?返回的函数只有一个键,但键(在本例中为2)可以是变量

Array ( [2] => Array ( [productID] => 1 [offerid]=>1)

预期结果:

Array  ( [productID] => 1 [offerid]=>1)

3 个答案:

答案 0 :(得分:3)

至少有3种方法可以做到这一点:

使用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']);

答案 1 :(得分:1)

如果要获取数组的当前值,可以使用current()假设数组指针位于正确的位置。如果只有一个值,那么这应该可以正常工作。

http://php.net/manual/en/function.current.php

答案 2 :(得分:0)

我认为Devon的答案对你有用,但如果没有,你可以尝试

$arr = array_column($arr, $arr[2]);

如果您需要始终使用主数组的第二个索引,则需要使用所有索引

array_map()

array_map('array_map', $arr);之类的东西应该有用。