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

时间:2019-04-22 13:25:03

标签: php arrays sorting

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

<?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)中更容易做到这一点,请告诉我如何

2 个答案:

答案 0 :(得分: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 :(得分: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