为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
神不在的星期二 2023-06-24 19:16:20
我有以下场景$elementsInPairs = ["xyz","xxx","yyy","zzz"];$valuesInPair =[4,2,3,1];我需要对第二个数组进行排序,这会给我[1,2,3,4]我可以这样做sort($valuesInPair)但我也需要根据第二个数组的排序在第一个数组中发生同样的情况["zzz","xxx","yyy","xyz"];编辑 由于我必须紧急修复它,我想我无法分享更多信息,而且问题似乎很模糊基本上,我的想法是,我有两组数组,在所有情况下元素数量相同,并且它们彼此链接,第二个数组是一组订单 ID。第一个数组是一组名称,所以在上面的例子中,我有4 relates to xyz2 relates to xxx3 relates to yyy1 relates to zzz所以我需要根据 ID 进行排序,并且在第一个数组中也反映相同的顺序,所以最终的结果是["zzz","xxx","yyy","xyz"];这是根据排序的[1, 2, 3, 4];希望这能解决上面的问题
查看完整描述

5 回答

?
弑天下

TA贡献1818条经验 获得超7个赞

您可以使用 array_multisort 方法来实现这一点。

array_multisort($valuesInPair, SORT_ASC, $elementsInPair);



查看完整回答
反对 回复 2023-06-24
?
DIEA

TA贡献1820条经验 获得超2个赞

你可以这样做:


<?php


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

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

//use [asort][1] - Sort an array in reverse order and maintain index association

asort($valuesInPair);

// and make a new array to sort elementsInPairs

$newelementsInPairs = array();

foreach($valuesInPair as $key=>$val){

    $newelementsInPairs[] = $elementsInPairs[$key];

}

print_r(implode(",",$valuesInPair)."\n");

print_r(implode(",",$newelementsInPairs));

/** Output


1,2,3,4

zzz,xxx,yyy,xyz


 **/


查看完整回答
反对 回复 2023-06-24
?
慕仙森

TA贡献1827条经验 获得超7个赞

您好,请合并两个数组并排序

$newArray =array_combine($valuesInPair,$elementsInPairs);

然后sort($newArray);


查看完整回答
反对 回复 2023-06-24
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

使用下面的代码,这正是您正在寻找的。


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

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


$data = array_combine($elementsInPairs,$valuesInPair);

asort($data);


$dumpdata = [];


foreach($data as $x => $x_value) {

    $dumpdata[] = $x;

}


print_r($dumpdata);

我希望这可以帮助你。


查看完整回答
反对 回复 2023-06-24
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

您可以使用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

)


查看完整回答
反对 回复 2023-06-24
  • 5 回答
  • 0 关注
  • 259 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信