简体   繁体   English

排序多个维度数组php

[英]sorting of a multy dimensional array php

I need to sort an array like 我需要对数组进行排序

$arrayName = array(0 => array('val' => 100), 1 => array('val' => 75),3 => array('val' => 10), 4 => array('val' => 15));

I need output like this 我需要这样的输出

$arrayName = array(3 => array('val' => 10), 4 => array('val' => 15),1 => array('val' => 75), 0 => array('val' => 100));

This should work for you: 这应该为您工作:

(Use asort() so you don't lose your key's) (使用asort()这样就不会丢失密钥)

<?php

    $arrayName = array(0 => array('val' => 100), 1 => array('val' => 75),3 => array('val' => 10), 4 => array('val' => 15));
    asort($arrayName);

    print_r($arrayName);

?>

Output: 输出:

Array ( [3] => Array ( [val] => 10 ) [4] => Array ( [val] => 15 ) [1] => Array ( [val] => 75 ) [0] => Array ( [val] => 100 ) )

try this 尝试这个

foreach ($arrayName as $key => $row) {
$data[$key]  = $row[0]; 
// of course, replace 0 with whatever is the date field's index
}
array_multisort($data, SORT_ASC, $arrayName);

Use krsort for sort array by key in descending order 使用krsort按键对数组进行降序排列

krsort($arrayName);
print_r($arrayName);

Rizier123 has the simplest solution. Rizier123具有最简单的解决方案。 If you needed to have more complex comparisons (say your array had multiple keys/values that you want to sort on), you could use uasort and create a custom comparison function ( uasort preserves array keys while usort does not). 如果您需要进行更复杂的比较(例如您的数组具有要排序的多个键/值),则可以使用uasort并创建一个自定义比较函数( uasort保留数组键,而usort uasort保留)。 For example: 例如:

public function cmp($a, $b)
{
    if ($a['val'] == $b['val']) {
        return 0;
    }

    return ($a['val'] < $b['val']) ? -1 : 1;
}

uasort($arrayName, 'cmp');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM