Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组_映射删除的内容超过了要求_Php_Array Map - Fatal编程技术网

php数组_映射删除的内容超过了要求

php数组_映射删除的内容超过了要求,php,array-map,Php,Array Map,我有一个如下的数组 Array ( [code] => BILL [assets] => Array ( [en] => Array ( [labels] => Array ( [datestamp] => April 30, 2013

我有一个如下的数组

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\u 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'];

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

$en_new = array_map(function ($e){ return $e['en']; } , $en['assets'] );
然后附加代码部分:

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

当用于按索引访问字符串时,索引
'en'
将转换为int(=>0)<代码>比尔[0]=>
'B'
是的,它将字符串视为数组,Yoshi是对的。你的第二个想法是我使用的,嗯<代码>$en_new['code']=$en['code']谢谢。