PHP:根据另一个数组进行数组排序


PHP: Array sorting according to another array

我有两个数组,每个数组大约有50个字段,其中一个是用户数组,它是从db获得的,看起来像这样(缩短为只有3个字段(

Array( [0] => Array([id] => 1 [email] => email1@hotmail.com [last_name] => Lastname)
       [1] => Array([id] => 2 [email] => email2@hotmail.com [last_name] => Lastname2)
     );

我的另一个数组是字段数组,其中key是字段的名称,value是用户表中的字段(也缩写为(:

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

现在,我想生成一个数组来比较两个用户,经过几个foreach之后,我得到了这个数组:

 Array([id] => Array([0] => 1 [1] => 2)
          [email] => Array([0] => email1@hotmail.com [1] => email2@hotmail.com)
          [last_name] => Array([0] => Lastname [1] => Lastname2)

正如您所看到的,最后一个数组包含两个用户的id、两个用户都的电子邮件等,用于进行比较。然而,这是有效的,您可以看到顺序与字段数组的名称不对应。我希望根据第二个数组的顺序创建第三个数组(即,1(id,2(姓氏,3(电子邮件(

如何做到这一点?

<?php
$newArray = array();
$rows = Array(
   Array('id' => 1, 'email' => 'email1@hotmail.com', 'last_name' => 'Lastname'),
   Array('id' => 2, 'email' => 'email2@hotmail.com', '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);

正如您所看到的,我使用了另一个数组进行排序。

array_merge(array_fill_keys(array('id', 'lastname', 'email'), null)
   , $comparison_arrays
);