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必须是我最喜欢的函数