Php 在另一个具有相同键的数组中按分数值对数组进行排序
我有两个这样的阵列:Php 在另一个具有相同键的数组中按分数值对数组进行排序,php,arrays,sorting,Php,Arrays,Sorting,我有两个这样的阵列: function sortScores($a, $b) { return ($a['score'] - $b['score']); } usort($people, 'sortScores'); 数组(键为ID user,值为name)#1 数组(键为ID user,值为排序得分)#2 排序后的预期结果(最低值优先,最高值最后) 实现这一目标最简单的方法是什么?谢谢你试试这个 asort($arr2); $finalArr=[]; foreach($arr2 a
function sortScores($a, $b) {
return ($a['score'] - $b['score']);
}
usort($people, 'sortScores');
数组(键为ID user,值为name)#1
数组(键为ID user,值为排序得分)#2
排序后的预期结果(最低值优先,最高值最后)
实现这一目标最简单的方法是什么?谢谢你试试这个
asort($arr2);
$finalArr=[];
foreach($arr2 as $key => $value){
$finalArr[$key]=$arr1[$key];
}
我们正在对索引关联进行排序和维护()
我们正在循环排序的数组,并与第一个数组进行比较,然后存储到最后一个数组
asort($arr2);
$finalArr=[];
foreach($arr2 as $key => $value){
$finalArr[$key]=$arr1[$key];
}
我们正在对索引关联进行排序和维护()
我们正在循环排序的数组,并与第一个数组进行比较,然后存储到最后一个数组一种简单的方法是使用排序数组和合并值。()
一种简单的方法是使用排序数组和合并值。()
我建议您做的是: 创建包含关联数组的数组,因为这样可读性更好
$people = [
['name' => 'John Doe', 'score' => 45],
['name' => 'Steve Jobs', 'score' => 27],
['name' => 'Brad Pitt', 'score' => 50.5],
]
并使用usort()进行排序-类似于以下内容:
function sortScores($a, $b) {
return ($a['score'] - $b['score']);
}
usort($people, 'sortScores');
顺便说一句,这更像是一个建议
编辑:
对于选择:
foreach ($people as $p) {
echo $p['name']
}
就这么简单,只需在echo中添加标签,或者以任何方式打印,我建议您执行以下操作: 创建包含关联数组的数组,因为这样可读性更好
$people = [
['name' => 'John Doe', 'score' => 45],
['name' => 'Steve Jobs', 'score' => 27],
['name' => 'Brad Pitt', 'score' => 50.5],
]
并使用usort()进行排序-类似于以下内容:
function sortScores($a, $b) {
return ($a['score'] - $b['score']);
}
usort($people, 'sortScores');
顺便说一句,这更像是一个建议
编辑:
对于选择:
foreach ($people as $p) {
echo $p['name']
}
就这么简单,只需将标签添加到您的echo中,或者以您正在打印的方式打印即可这对我很有用:
<?php
$names[7] = "John Doe";
$names[12] = "Steve Jobs";
$names[20] = "Brad Pitt";
$ages[7] = 45;
$ages[12] = 27;
$ages[20] = 50.5;
// Sort second array on age values
asort($ages);
// Loop through sorted age array
foreach($ages as $key => $value) {
// Get name and insert into new array
$sortedArray[$key] = $names[$key];
}
// Print sorted names
print_r($sortedArray);
?>
这对我很有用:
<?php
$names[7] = "John Doe";
$names[12] = "Steve Jobs";
$names[20] = "Brad Pitt";
$ages[7] = 45;
$ages[12] = 27;
$ages[20] = 50.5;
// Sort second array on age values
asort($ages);
// Loop through sorted age array
foreach($ages as $key => $value) {
// Get name and insert into new array
$sortedArray[$key] = $names[$key];
}
// Print sorted names
print_r($sortedArray);
?>
请把你的问题说清楚。数组2和它有什么关系?它是排序的分数,最低值在前,最高值在后。@Blackam Array2是排序数组1的条件,我想这已经足够清楚了。。第一个数组包含名称,第二个数组包含分数,所以他想按分数对名称排序,但他有两个数组。。不知道为什么它被否决了这么多次,现在它应该更清楚了。请把你的问题说清楚。数组2和它有什么关系?它是排序的分数,最低值在前,最高值在后。@Blackam Array2是排序数组1的条件,我想这已经足够清楚了。。第一个数组包含名称,第二个数组包含分数,所以他想按分数对名称排序,但他有两个数组。。我不知道为什么它被多次否决,现在应该更清楚了。检查foreach循环,你遗漏了一些东西;)@轻便摩托车固定前驱检查你的前驱环,你遗漏了什么;)@moped fixed foreachI需要使用该阵列作为select的选项,因此Dhayal的解决方案更适合我的情况。但无论如何还是要感谢…@AdamVýborný这没有问题,我在Nette框架中使用Nette表单。您必须通过数组指定选项,其中key是value,value是label。我需要使用该数组作为select的选项,因此Dhayal的解决方案更适合我的情况。但无论如何还是要感谢…@AdamVýborný这没有问题,我在Nette框架中使用Nette表单。您必须通过数组指定选项,其中key是value,value是label。