我循环遍历关联数组的实例(这些关联数组本身是数组的一部分)。
对于每个数组,我想根据键返回一个值。
目前我有:
$image_path = array_column($myarray, 'uri');
但当然array_column
将其值存储在一个数组中,考虑到它只返回1个值,对我来说没用。
是否存在允许我根据提供的密钥获取值的现有函数?
例如:
$image_path = get_keys_value($myarray, 'uri');
示例数组。这是一个非常基本的例子。真实的东西有很多层次:
$myarray = array
(
'instance' => array(
'type' => 'somedata',
'content' => somedata',
'image' => array(
'name' => 'photo',
'uri' => 'path/to/file.png'
),
),
);
期望的结果:
$ image_path包含'path / to / file.png'字符串。
答案 0 :(得分:1)
试试这个,
function array_column_recursive(array $haystack, $needle)
{
$found = [];
array_walk_recursive($haystack, function ($value, $key) use (&$found, $needle) {
if ($key == $needle) {
$found[] = $value;
}
});
return $found;
}
echo array_column_recursive($myarray, 'uri')[0];
以下是code。
array_column只能使用2级数组结构。
上面的数组将解决您的问题。
我希望这会有所帮助
答案 1 :(得分:0)
我猜你可以使用array_map。
例如:
$arr = [
[
'root' => [
'child1' => [
'child2' => 123
]
]
],
[
'root' => [
'child1' => [
'child2' => 456
]
]
],
[
'root' => [
'child1' => [
'child2' => 789
]
]
],
[
'root' => [
'child1' => [
'child2' => 123
]
]
],
];
print_r(array_map(function($row) {
// here goes expression to get required path
return $row['root']['child1']['child2'];
}, $arr));
输出:
Array
(
[0] => 123
[1] => 456
[2] => 789
[3] => 123
)