1

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

这是我的第一个具有正确值的数组,但顺序不正确:

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 的顺序。

我一直在玩它一段时间,似乎无法得到它。

任何帮助都会很棒。

谢谢!

4

5 回答 5

3
$c = array();
foreach (array_keys($b) as $k) {
    $c[k] = $a[k];
}
于 2013-01-25T03:07:09.397 回答
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);

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

于 2013-01-25T03:24:58.700 回答
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);
于 2013-01-25T03:15:40.067 回答
0
$array = array('a' => 100, 'b' => '5');

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

var_dump($newArray);
于 2013-01-25T03:17:36.827 回答
0
  1. 创建一个新数组(数组 C)
  2. 使用 FOR 循环遍历数组 B
  3. 对于数组 B 中的每个值,从数组 A 中获取具有相同键的值,然后设置数组 C 将这些值附加到数组 C。这将使它们在 C 中以正确的顺序排列。
于 2013-01-25T03:09:43.297 回答