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