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
)
我有一个有趣的任务无法处理。我有一个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
)