2013-06-03 2 views
2

많은 키와 값이 들어있는 초기 배열을 특정 키로 정렬 된 배열과 키를 기반으로 한 단일 배열에서 해당 키의 모든 값으로 정렬하려고합니다.초기 키를 기반으로 PHP 배열을 정렬 하시겠습니까?

그래서 여기 내가 가지고있는 배열입니다 :

$Before = Array(Array("id" => 1, "name" => "Dogs"), 
       Array("id" => 2, "name" => "Lions"), 
       Array("id" => 3, "name" => "Tigers")); 

그리고 이것은 내가 끝낼하고자하는 배열입니다 :

$After = Array("ids" => Array(1, 2, 3), 
       "names" => Array("Dogs", "Lions", "Tigers")); 

나는 그 말이 바랍니다. 나는 그것을 설명하는 것에 반대하는 예를 보여주기가 더 쉬웠다.

+0

이것은 정렬보다 구조가 더 비슷해 보입니다. –

+0

그래, 정확히 어떻게 구사해야하는지 잘 모르겠습니다. –

+0

구조 조정뿐 아니라 정렬이 필요한 경우 http://www.php.net/manual/en/function.array-multisort.php의 예제 # 3에있는 코드를 사용해 볼 수 있습니다. – Pudge601

답변

2
$after = array(
    'ids' => array(), 
    'names' => array() 
); 

foreach($before as $row){ 
    $after['ids'][] = $row['id']; 
    $after['names'][] = $row['name']; 
} 

var_dump($after); 
0

아마 같은 :

foreach ($input as $item) { 
    foreach ($item as $field => $value) { 
     $result[$field][] = $value; 
    } 
} 
    var_dump($result); 
2

당신은이 일을해야 array_reduce

$After = array_reduce($Before, function ($a, $b) { 
    $a['ids'][] = $b['id']; 
    $a['names'][] = $b['name']; 
    return $a; 
}); 

Live DEMO

0
$After = array(); 
foreach ($Before as $a) { 
    $After['ids'][] = $a['id']; 
    $After['names'][] = $a['name']; 
} 

사용할 수 있습니다 :)

관련 문제