php array_map删除了超过要求的内容

时间:2013-05-29 17:36:18

标签: php array-map

我有一个如下所示的数组。 。 。

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]的值。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以执行类型检查:

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

虽然这样做可能就足够了:

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

答案 1 :(得分:0)

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

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

然后附加代码部分:

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