PHP-根据另一个数组的值对索引数组进行排序

问题描述 投票:-1回答:2

基本上,我想基于另一个数组对数组进行排序。

如,

<?php
$movies=array("Avengers","Spiderman","Batman","Flash");
$ratings=array(9,3,4,7,);
?>

换句话说,$movies[0](“复仇者联盟”)的评级为9$movies[1](“蜘蛛侠”)的评级为3,依此类推。

我希望收视率数组按数字顺序排序,从而对电影数组进行排序。我希望这是一个函数。因此,阵列将是:

<?php
$movies=array("Spiderman","Batman","Flash","Avengers",);
$ratings=array(3,4,7,9);
?>

ratings数组已经排序,因此movies数组也已经排序,但根据ratings数组。

我很抱歉我是php的新手,我知道这样做可能很简单,但我不知道该怎么做。我能想到的唯一方法是使用插入到sql表中然后从降序中选择它订单,但这可能是一个非常糟糕的主意.....

任何帮助都非常感谢。提前致谢。

哦,如果在Laravel(我使用laravel)更容易做,请告诉我如何

php arrays sorting
2个回答
3
投票

您可以使用array_combine()来组合电影名称和评级。

因此,电影名称将是结果数组的关键,评级将是值。

现在,使用arsort()进行排序,以便新的数组按降序排序,保持电影名称不变。

打印阵列。

码:

<?php
$movies=array("Spiderman","Batman","Flash","Avengers",);
$ratings=array(3,4,7,9);
$movieRatings = array_combine($movies, $ratings);
arsort($movieRatings);
echo '<pre>';print_r($movieRatings);
?>

输出:

Array
(
    [Avengers] => 9
    [Flash] => 7
    [Batman] => 4
    [Spiderman] => 3
)

1
投票

试试这个,

array_combine ( array $keys , array $values ) : array

它的工作原理是将一个数组中的值设置为另一个数组的键,在您的情况下是您的电影。

<?php
$movies=array("Avengers","Spiderman","Batman","Flash");
$ratings=array(9,3,4,7,);

$result = array_combine ( $movies, $ratings);

// then sort this way...

arsort($result, 0);
?>

两个函数的文档都在这里......

https://www.php.net/manual/en/function.array-combine.php

https://www.w3schools.com/php/func_array_arsort.asp

© www.soinside.com 2019 - 2024. All rights reserved.