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

时间:2011-10-25 16:03:00

标签: php

我有两个阵列,每个阵列大约有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是users表中的字段(也缩短了):

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,两者的电子邮件等,用于进行比较。但是,您可以看到该顺序与fields数组的名称不对应。我想根据第二个数组的顺序创建第三个数组(即1)id,2)姓氏,3)email)

如何实现?

2 个答案:

答案 0 :(得分:0)

<?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);

如您所见,我使用了另一个数组进行排序。

答案 1 :(得分:0)

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