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

我有以下场景


$elementsInPairs = ["xyz","xxx","yyy","zzz"];

$valuesInPair =[4,2,3,1];

我需要对第二个数组进行排序,这会给我


[1,2,3,4]

我可以这样做


sort($valuesInPair)

但我也需要根据第二个数组的排序在第一个数组中发生同样的情况


["zzz","xxx","yyy","xyz"];

编辑 由于我必须紧急修复它,我想我无法分享更多信息,而且问题似乎很模糊


基本上,我的想法是,我有两组数组,在所有情况下元素数量相同,并且它们彼此链接,第二个数组是一组订单 ID。第一个数组是一组名称,所以在上面的例子中,我有


4 relates to xyz

2 relates to xxx

3 relates to yyy

1 relates to zzz

所以我需要根据 ID 进行排序,并且在第一个数组中也反映相同的顺序,


所以最终的结果是


["zzz","xxx","yyy","xyz"];

这是根据排序的


[1, 2, 3, 4];

希望这能解决上面的问题


神不在的星期二
浏览 385回答 5
5回答

弑天下

您可以使用 array_multisort 方法来实现这一点。array_multisort($valuesInPair, SORT_ASC, $elementsInPair);

DIEA

你可以这样做:<?php$elementsInPairs = ["xyz","xxx","yyy","zzz"];$valuesInPair =[4,2,3,1];//use [asort][1] - Sort an array in reverse order and maintain index associationasort($valuesInPair);// and make a new array to sort elementsInPairs$newelementsInPairs = array();foreach($valuesInPair as $key=>$val){&nbsp; &nbsp; $newelementsInPairs[] = $elementsInPairs[$key];}print_r(implode(",",$valuesInPair)."\n");print_r(implode(",",$newelementsInPairs));/** Output1,2,3,4zzz,xxx,yyy,xyz&nbsp;**/

慕仙森

您好,请合并两个数组并排序$newArray&nbsp;=array_combine($valuesInPair,$elementsInPairs);然后sort($newArray);

蛊毒传说

使用下面的代码,这正是您正在寻找的。$elementsInPairs = ["xyz","xxx","yyy","zzz"];$valuesInPair =[4,2,3,1];$data = array_combine($elementsInPairs,$valuesInPair);asort($data);$dumpdata = [];foreach($data as $x => $x_value) {&nbsp; &nbsp; $dumpdata[] = $x;}print_r($dumpdata);我希望这可以帮助你。

一只斗牛犬

您可以使用array_combine()、ksort()和array_values():<?php$elementsInPairs = ["xyz","xxx","yyy","zzz"];$valuesInPair = [4,2,3,1];$newArray = array_combine($valuesInPair, $elementsInPairs);ksort($newArray);$sortedElements = array_values($newArray);print_r($sortedElements);将输出Array(    [0] => zzz    [1] => xxx    [2] => yyy    [3] => xyz)
打开App,查看更多内容
随时随地看视频慕课网APP