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

PHP-重新排序数组以匹配另一个数组的顺序,php,arrays,Php,Arrays,我有一个数组,它有我需要的正确值,但它是无序的。然后我有另一个具有相同键的数组,它的顺序正确,但值不是我需要的 这是我的第一个数组,具有正确的值,但顺序不正确: Array ( [countTotal] => 7268 [zip] => [yearName] => [countZipRadius] => [Acura] => 1334 [Cadillac] => 511 [Ford] => 5

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

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

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

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

任何帮助都会很好

谢谢

$c = array();
foreach (array_keys($b) as $k) {
    $c[k] = $a[k];
}
创建一个新的数组 使用FOR循环遍历数组B 对于数组B中的每个值,从数组A中获取具有相同键的值,并设置数组C将这些值附加到数组C。这将使它们在C中的顺序正确。 创建一个新的数组 使用FOR循环遍历数组B 对于数组B中的每个值,从数组A中获取具有相同键的值,并设置数组C将这些值附加到数组C。这将使它们在C中的顺序正确。 使用scones的方法:

$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);
使用scones的方法:

$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);
您可以使用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等值可以使用php的array\u 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等值

您使用的顺序是什么?是定制订单吗?您使用的订单是什么?这是定制订单吗?正是。只需创建一个新阵列,而不是尝试对现有阵列进行排序。但是,您必须确保数组具有相同的键。否则信息可能会丢失。实际上,使用固定参数名称顺序的解决方案会更好。但因此,我们需要对代码有更多的了解。like$keys=数组“a”、“b”、“c”;foreach$keys为$k;这与数组$bExactly无关。只需创建一个新阵列,而不是尝试对现有阵列进行排序。但是,您必须确保数组具有相同的键。否则信息可能会丢失。实际上,使用固定参数名称顺序的解决方案会更好。但因此,我们需要对代码有更多的了解。like$keys=数组“a”、“b”、“c”;foreach$keys为$k;这将独立于数组$bThanks!array\u multisort必须是我最喜欢的函数谢谢!数组_multisort必须是我最喜欢的函数