使用php中嵌套的多维数组的值创建一个新的关联数组



我有以下多维数组,我通过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();

解释:

  1. 将数组转换为集合,以便能够使用Laravel集合提供的帮助:

    collect($apiData)

  2. 将多维数组转换为单维数组,这只不过是第n个深度的数组(在本例中为4):

    collect($apiData)->flatten(4)

  3. 将此数组映射到仅包含T20键值的数组

    collect($apiData)->flatten(4)->pluck('T20')

  4. 获取集合的数组表示

    collect($apiData)->flatten(4)->pluck('T20')->all()

最新更新