从多维数组中提取值并存储在单独的数组中

时间:2019-08-28 16:56:05

标签: php arrays for-loop multidimensional-array

我需要从多维数组中提取值。但是,起点是stdClass对象。目的是使用提取的值创建图形。该图不属于此问题。

问题:

是否有更短,更直接的方法,然后在下面? 请注意,值可以是100,所以我不打算一一提取值。

// Create an stdClass.
$products = (object)[
    'group' => [
        ['level' => "12"],
        ['level' => "30"],
        ['level' => "70"],
    ]
];

// Transform stdClass to array.
$products = json_decode(json_encode($products), true);

var_dump($products);

// Calc amount of subarrays.
$amount_of_subarrays = count($products['group']);
$amount_of_subarrays = $amount_of_subarrays - 1; // Adjust since objects start with [0].


// Extract data from [$products], populate new array [$array].

$array = [];

for ($i=0; $i <= $amount_of_subarrays; $i++) {
    $tmp = $products['group'][$i]['level'];
    array_push($array, $tmp);
}

var_dump($array);

结果(符合预期):

array(3) {
  [0] =>
  string(2) "12"
  [1] =>
  string(2) "30"
  [2] =>
  string(2) "70"
}

2 个答案:

答案 0 :(得分:1)

我知道的最简单的方法是使用返回the values from a single column in the input array的{​​{3}}函数

例如array_column($products['group'], 'level')应该返回预期的结果。

答案 1 :(得分:0)

您不需要将json_encode和json_decode从stdClass转换为数组 如果使用这个:

$result = array_column($products->group, 'level');