基本上,我想根据另一个数组对数组进行排序。
如
<?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)中更容易做到这一点,请告诉我如何
答案 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);
?>
这两个功能的文档都在这里...