Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在另一个具有相同键的数组中按分数值对数组进行排序_Php_Arrays_Sorting - Fatal编程技术网

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。