PHP array_map删除了不必要的内容


php array_map removes more than required

我有一个像下面这样的数组…

Array
(
    [code] => BILL
    [assets] => Array
        (
            [en] => Array
                (
                    [labels] => Array
                        (
                            [datestamp] => April 30, 2013
                        )
                    [data] => Array
                        (
                            [Equity] => 88.83000000000
                            [Global] => 10.84000000000
                            [Other] => 0.33099095766
                        )
                )
        )
)

我已经在这个数组上运行了array_map函数来移除[en]数组

$en = array_map(function ($e){ return $e['en']; } , $en );

注意结果数组如何将[code]的值从BILL截断为B

Array
(
    [code] => B
    [assets] => Array
        (
            [labels] => Array
                (
                    [datestamp] => April 30, 2013
                )
            [data] => Array
                (
                    [Equity] => 88.83000000000
                    [Global] => 10.84000000000
                    [Other] => 0.33099095766
                )
        )
)

关于如何避免这种情况的发生有什么建议吗?它根据需要删除键[en]的数组,但我不希望[code]的值被截断。

谢谢。

您可以执行类型检查:

$en = array_map(function ($e){
    if (is_array($e)) {
        return $e['en'];
    } else {
        return $e;
    }
} , $en );

尽管这样做可能就足够了:

$en['assets'] = $en['assets']['en'];

Hello而不是传递整个数组作为参数,您可以将数组的资产部分作为参数传递给array_map函数:

$en_new = array_map(function ($e){ return $e['en']; } , $en['assets'] );

,然后加上代码部分:

$en_new['code'] = $en['code'];