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 ответа

Решение

Вы можете выполнить проверку типа:

$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'];
Другие вопросы по тегам