Преобразование массива php массивов в один массив

У меня есть массив, значения которого представляют собой все массивы определенного формата, которые выглядят следующим образом:

Array ( [0] => Array ( [username] => John ) [1] => Array ( [username] => Joe ) [2] => Array ( [username] => Jake ) ) 

и я хотел бы иметь это:

 Array ( [0] => John [1] => Joe [2] => Jake ) 

Я могу сделать это вручную с помощью цикла, но есть ли лучший способ? Если нет, возможно ли это сделать для массива объектов, имеющих общий атрибут?

Solutions Collecting From Web of "Преобразование массива php массивов в один массив"

Начиная с PHP 5.5.0 есть встроенная функция array_column которая делает именно это.

зачем усложнять вещи?

 foreach($array as $k=>$v) { $new[$k] = $v['username']; } 

Если вы используете PHP 5.3, вы можете использовать array_walk_recursive и закрытие (закрытие может быть заменено нормальной функцией, если ваша версия PHP <5.3):

 function arrayFlatten(array $array) { $flatten = array(); array_walk_recursive($array, function($value) use(&$flatten) { $flatten[] = $value; }); return $flatten; } $nested = array( array('username' => 'John'), array('username' => 'Joe'), array('username' => 'Jake'), ); $flattened = arrayFlatten($nested); var_dump($flattened) array 0 => string 'John' (length=4) 1 => string 'Joe' (length=3) 2 => string 'Jake' (length=4) 
 $new_array = array_column($last_array, 'username'); 
 $new = array_map(create_function('$auser', 'return $auser["username"];'), $array); 

Если вы используете объекты, вы можете просто изменить return $auser["username"]; для return $auser->get_username();

Попробуйте этот код:

 foreach ($arr as $key => $val) { sort($val ); $new = array_merge($val, $new); } print_r ($new); 

Попробуй это:

 $list=array(); foreach($array as $v) { array_push($list, $v['username']); } 

Если вам не нужны ключи:

 $new_array = array(); foreach($array as $v) { $new_array[] = $v['username'] } 

Для тех, кто использует composer :

  1. if <= php5.5 array_column может использоваться
  2. if> php5.5 доступные полисы, такие как https://github.com/symfony/polyfill/tree/master/src/Php55, могут использоваться. После того, как вы composer install symfony/polyfill-php55 , вы можете просто вызвать массив array_column как если бы ваш php5.4 или ниже имел его.