我有以下多维数组,我通过curl请求从API获得这个。
Array
(
[0] => Array
(
[id] => 1
[name] => David Warner
[type] => batter
[country] => Aus
[age] => 33
[runs] => 11100
[wickets] => 12
[catches] => 16
[format] => Array
(
[0] => Array
(
[Domestic] => Array
(
[0] => Array
(
[ODI] => 73
[Tests] => 34
[T20] => 90
)
)
)
)
)
[1] => Array
(
[id] => 2
[name] => Mark Wood
[type] => bowler
[country] => Eng
[age] => 34
[runs] => 200
[wickets] => 120
[catches] => 2
[format] => Array
(
[0] => Array
(
[Domestic] => Array
(
[0] => Array
(
[ODI] => 40
[Tests] => 49
[T20] => 12
)
)
)
)
)
)
我正在尝试创建一个新的数组,它只包含"[T20]"值。
我想要的输出应该类似于下面的数组
array:2 [▼
0 => "90"
1 => "12"
]
到目前为止,我尝试了以下方法…
$newArr_t20 = array_column($result_3['cricketers']['player']['format']['Domestic'], "T20");
因为我正在使用laravel,所以我也试着遵循
use IlluminateSupportArr;
$newArr_t20 = Arr::pluck($result_3, 'cricketers.player.format.Domestic.T20');
但是什么都不适合我…
你可以试试:
$array = 'Your array...';
$t20_values = [];
foreach ($array as $value) {
foreach ($value['format'] as $format) {
foreach ($format['Domestic'] as $domestic) {
if (isset($domestic['T20'])) {
$t20_values[] = $domestic['T20'];
}
}
}
}
dd($t20_values);
使用Laravel的collection helperCollection::flatten()
应该是正确的方式;
$data = collect($apiData)->flatten(4)->pluck('T20')->all();
解释:
将数组转换为集合,以便能够使用Laravel集合提供的帮助:
collect($apiData)
将多维数组转换为单维数组,这只不过是第n个深度的数组(在本例中为4):
collect($apiData)->flatten(4)
将此数组映射到仅包含
T20
键值的数组collect($apiData)->flatten(4)->pluck('T20')
获取集合的数组表示
collect($apiData)->flatten(4)->pluck('T20')->all()