我需要从多维数组中提取值。但是,起点是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"
}
答案 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');