PHP:从子数组获取值

vmdwslir  于 2023-09-29  发布在  PHP
关注(0)|答案(6)|浏览(89)

如何从子数组中获取值?在本例中,我对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循环来迭代,但结果一团糟--感谢您的帮助。

ehxuflar

ehxuflar1#

只要一个简单的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
)
vq8itlhq

vq8itlhq2#

这就是array_map()的作用。它循环遍历数组,并对每个值应用回调函数,然后返回修改后的数组。

$objects = array_map( function( $val ) {
    return $val['locale'];
}, $objects );
ny6fqffe

ny6fqffe3#

勾选这个CodeViper Demo

PHP

<?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 )
ojsjcaue

ojsjcaue4#

你可以很容易地用一个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);
?>
kh212irz

kh212irz5#

用最后一个元素的值替换每个子数组?array_map()end()非常简洁......尽管它要求应用程序将元素保留在子数组的末尾--因此可以说不太可信。
另外,$objects对于多维数组来说是一个糟糕的变量名选择。
代码:(Demo

var_export(array_map('end', $objects));

输出量:

array (
  1397300927159026 => 'de_DE',
  10152395537445743 => 'en_US',
)
beq87vna

beq87vna6#

内置的array_column()函数完全可以满足您的需求。https://www.php.net/manual/en/function.array-column.php

相关问题