PHP 数组获取当前元素

PHP array get current element

我有一个有趣的任务无法处理。我有一个PHP数组,一旦多维,关联或混合,自动随机生成。

$data['sport']['basketball']['team']['player']['position']['hand']['name']['finalelement']
$data['sport']['basketball']['team']['player'][0]['position']['hand']['name']['finalelement']
$data['sport']['basketball']['team']['player'][0]['position']['hand']['name'][0]['finalelement']
$data['sport']['basketball']['team']['player']['position']['hand']['name'][0]['finalelement']

目标是,不管是多维的还是关联的,都得到最终的元素。有一个简单的方法,几乎​​没有 if 条件。但是我想问问大家有没有什么更好的方法?

下一个代码returns第一个不是数组的最深值:

$data['sport']['basketball']['team']['player']['position']['hand']['name'][0]['finalelement'] = 'end';

$current = $data;

while (is_array($current)) {
    $current = array_values($current)[0];
}

print $current; // end

您可以按如下方式使用 array_walk_recursive :

$data['sport']['basketball']['team']['player']['position']['hand']['name']['finalelement'] = 'e1';
$data['sport']['basketball']['team']['player'][0]['position']['hand']['name']['finalelement'] = 'e2';
$data['sport']['basketball']['team']['player'][0]['position']['hand']['name'][0]['finalelement'] = 'e3';
$data['sport']['basketball']['team']['player']['position']['hand']['name'][0]['finalelement'] = 'e4';

$list = [];
array_walk_recursive($data, function ($value, $key) use (&$list) {
    $list[] = $value;
});

print_r($list);

这将输出以下内容:

Array (
    [0] => e1
    [1] => e4
    [2] => e2
    [3] => e3
)