2011-10-25 3 views
0

다른 배열에있어서, 배열, 하나의 DB로부터 얻어지며 같다 된 사용자의 배열이다PHP : 분류 I은 50 필드마다 두 배열을

Array([0] => Array([id] => 1 [email] => [email protected] [last_name] => Lastname) 
     [1] => Array([id] => 2 [email] => [email protected] [last_name] => Lastname2) 
    ); 
(단지 3 개의 필드로 단축) 내가 배열을 생산하려면 지금

Array([User ID] => id [Last Name] => last_name [Email] => email); 

:

내 다른 배열은, 키 필드의 이름입니다 필드의 배열이며, 값은 (도 단축) 사용자 테이블의 필드 두 사용자를 비교하고, 몇 foreach 후 나는이 배열을 가지고있다 :

Array([id] => Array([0] => 1 [1] => 2) 
      [email] => Array([0] => [email protected] [1] => [email protected]) 
      [last_name] => Array([0] => Lastname [1] => Lastname2) 

이 마지막 배열에는 두 명의 사용자에 대한 ID, 둘 다에 대한 전자 메일 등이 포함되어 있습니다.이 배열은 비교하는 데 사용됩니다. 그러나이 작업은 순서가 필드 배열의 이름과 일치하지 않음을 알 수 있습니다. 2 번째 배열 (즉, 1) id, 2) 성, 3) 전자 메일의 순서에 따라 세 번째 배열을 생성하고 싶습니다.

어떻게 달성 할 수 있습니까?

+0

왜 이런 식으로 정렬해야합니까? 연관 배열이므로 두 번째 배열 (즉, 원하는 순서)을 반복하고 세 번째 요소에서 해당 요소에 액세스 할 수 있습니다. 어떤 특별한 분류가 필요합니까? – Vikk

+0

물론 분류 할 필요가 있습니다. 그렇지 않으면 묻지 않을 것입니다. – luqita

답변

0
<?php 
$newArray = array(); 
$rows = Array(
    Array('id' => 1, 'email' => '[email protected]', 'last_name' => 'Lastname'), 
    Array('id' => 2, 'email' => '[email protected]', 'last_name' => 'Lastname2') 
); 
$fields = Array('User ID' => 'id', 'Last Name' => 'last_name', 'Email' => 'email'); 
foreach (array_values($fields) as $field) { 
    $newArray[$field] = array(); 
    foreach ($rows as $singleRow) { 
     $newArray[$field][] = $singleRow[$field]; 
    } 
} 
var_dump($newArray); 

알다시피 주문을 위해 다른 배열을 사용했습니다.

0
array_merge(array_fill_keys(array('id', 'lastname', 'email'), null) 
    , $comparison_arrays 
); 
관련 문제