PHP - 重新排序数组以匹配另一个数组的顺序

时间:2013-01-25 03:04:20

标签: php arrays

我有一个数组,它具有我需要的正确值,但它不正常。然后我有另一个具有相同键的数组,它的顺序正确,但值不是我需要的值。

这是我的第一个数组,其值正确但是乱序:

Array
(
    [countTotal] => 7268
    [zip] => 
    [yearName] => 
    [countZipRadius] => 
    [Acura] => 1334
    [Cadillac] => 511
    [Ford] => 5423
)

这是我的第二个数组,它具有正确的顺序但错误的值:

Array
(
    [countZipRadius] => 0
    [zip] => 1
    [yearName] => 2
    [Acura] => 3
    [Cadillac] => 4
    [Ford] => 5
    [countTotal] => 6
)

我试图找出一种方法来创建一个新数组,其中包含来自数组1的正确值,但这是数组2的顺序。

我已经玩了一段时间,似乎无法得到它。

任何帮助都会很棒。

谢谢!

5 个答案:

答案 0 :(得分:3)

$c = array();
foreach (array_keys($b) as $k) {
    $c[k] = $a[k];
}

答案 1 :(得分:1)

您可以使用php的array_multisort函数:

$original = array(
    'countTotal' => 7268,
    'zip' => '',
    'yearName' => '',
    'countZipRadius' => '',
    'Acura' => 1334,
    'Cadillac' => 511,
    'Ford' => 5423,
    );

$right = array(
    'countZipRadius' => 0,
    'zip' => 1,
    'yearName' => 2,
    'Acura' => 3,
    'Cadilac' => 4,
    'Ford' => 5,
    'countTotal' => 6
);

//make sure both arrays are in the same order
ksort($original);
ksort($right);

array_multisort($right, $original);

print_r($original);

当你给它两个具有相同数量元素的数组时,它会根据第一个数组的顺序对两个数组进行排序 - 在这种情况下,$right中的0,1,2,3等值

答案 2 :(得分:0)

  1. 创建新阵列(阵列C)
  2. 使用FOR循环通过阵列B
  3. 对于数组B中的每个值,从数组A获取具有相同键的值,并设置数组C将这些值附加到数组C.这将使它们在C中以正确的顺序排列。

答案 3 :(得分:0)

使用烤饼的方法:

$original = array(
    'countTotal' => 7268,
    'zip' => '',
    'yearName' => '',
    'countZipRadius' => '',
    'Acura' => 1334,
    'Cadillac' => 511,
    'Ford' => 5423,
    );
$right = array(
    'countZipRadius' => 0,
    'zip' => 1,
    'yearName' => 2,
    'Acura' => 3,
    'Cadilac' => 4,
    'Ford' => 5,
    'countTotal' => 6
);
foreach ($right as $key => $value) {
    $new[$key] = $original[$key];
}
print_r($new);

答案 4 :(得分:0)

$array = array('a' => 100, 'b' => '5');

$newArray = array_combine(array_keys($array), range(0, count($array) - 1));

var_dump($newArray);