如何从子阵列中获取值?在这种情况下,我对locale
$objects=
Array
(
[1397300927159026] => Array
(
[category] => 2
[locale] => de_DE
)
[10152395537445743] => Array
(
[category] => 100
[locale] => en_US
)
)
期望的输出:
Array
(
[1397300927159026] => "de_DE"
[10152395537445743] => "en_US"
)
我尝试过使用foreach循环来迭代,但结果很糟糕 - 感谢您的帮助。
答案 0 :(得分:3)
只需一个简单的foreach即可。您只需要在另一个数组中创建它。考虑这个例子:
$objects = array(
'1397300927159026' => array('category' => 2, 'locale' => 'de_DE'),
'10152395537445743' => array('category' => 100, 'locale' => 'en_US'),
);
$new_objects = array();
foreach($objects as $key => $value) {
// $key will contain = 1397300927159026, and 1397300927159026
// set that key into the new array as key also
$new_objects[$key] = $value['locale'];
}
echo '<pre>';
print_r($new_objects);
echo '</pre>';
示例输出:
Array
(
[1397300927159026] => de_DE
[10152395537445743] => en_US
)
答案 1 :(得分:1)
这是array_map()
的用途。它遍历数组并对每个值应用回调函数并返回修改后的数组。
$objects = array_map( function( $val ) {
return $val['locale'];
}, $objects );
答案 2 :(得分:0)
<?php
$objects=
Array
(
'1397300927159026' => Array
(
'category' => 2,
'locale' => 'de_DE'
),
'10152395537445743' => Array
(
'category' => 100,
'locale' => 'en_US'
)
);
$arr = array();
foreach($objects as $key => $value) {
$arr[$key] = $value['locale'];
}
print_r($arr);
?>
Array ( [1397300927159026] => de_DE [10152395537445743] => en_US )
答案 3 :(得分:0)
您可以使用foreach loop
和new array
轻松完成此操作。
声明新的array
说$abc
<?php
$abc = array();
//Going to loop through original array ($objects) as key and values.
foreach($objects as $key => $val ) {
// $key will contain values 1397300927159026, 10152395537445743
// $val['category'] contain values 2,100
// $val['locale'] contain values de_DE, en_US
$abc[$key] = $val['locale'];
}
print_r($abc);
?>
答案 4 :(得分:0)
将每个子数组替换为其最后一个元素的值? array_map()
与end()
十分简洁……尽管它要求您的应用程序将元素保留在子数组的末尾–可以说值得信赖。
对于多维数组,$objects
也是一个较差的变量名选择。
代码:(Demo)
var_export(array_map('end', $objects));
输出:
array (
1397300927159026 => 'de_DE',
10152395537445743 => 'en_US',
)