У меня часто есть 2-мерный массив:
array( array('key' => 'value1'), array('key' => 'value2'), ... );
И нужно создать 1-мерный массив:
array('value1', 'value2')
Это можно легко сделать с помощью foreach, но мне интересно, есть ли способ php 5.3 сделать это в одной строке.
$new_array = array_map(function($el) { return $el['key']; }, $array);
<?php $arr = array(array(141,151,161,140),2,3,array(101,202,array(303,404),407)); function array_oned($arrays){ static $temp_array = array(); foreach($arrays as $key){ if(is_array($key)){ array_oned($key); }else { $temp_array [] = $key; } } return $temp_array; } echo print_r(array_oned($arr)); ?>
Вы имели в виду что-то вроде этого?
array_reduce($array,function($arr,$new){ $arr[]=$new['key']; },array())
В случае, если у вас есть только одно значение во внутренних массивах:
$values = array_map('array_pop', $yourArray);
Обратный вызов может быть именем функции, поэтому зачем переопределять то, что уже существует в качестве основной функции? 🙂