Heim > Backend-Entwicklung > PHP-Tutorial > 请教一个PHP排序的问题

请教一个PHP排序的问题

WBOY
Freigeben: 2016-06-06 20:43:56
Original
773 Leute haben es durchsucht

我要对数组进行数值排序,代码如下:

<code>$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
asort($a, SORT_NUMERIC);
var_dump($a);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

打印结果如下:

<code>array(5) {
  'd' =>
  int(10)
  'a' =>
  int(10)
  'c' =>
  int(10)
  'z' =>
  int(10)
  'b' =>
  int(11)
}
</code>
Nach dem Login kopieren
Nach dem Login kopieren

问题:

  • 我需要对数值进行排序(已实现)
  • 若数值相同,则数组键的顺序位置不改变,请问如何做到

举例:
上面的数组

<code>$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

根据上面排序后,键的顺序依次为

d => 10, a => 10, c => 10, z => 10, b => 11

我希望能实现的顺序为为

a => 10, z => 10, c => 10, d => 10, b => 11

回复内容:

我要对数组进行数值排序,代码如下:

<code>$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
asort($a, SORT_NUMERIC);
var_dump($a);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

打印结果如下:

<code>array(5) {
  'd' =>
  int(10)
  'a' =>
  int(10)
  'c' =>
  int(10)
  'z' =>
  int(10)
  'b' =>
  int(11)
}
</code>
Nach dem Login kopieren
Nach dem Login kopieren

问题:

  • 我需要对数值进行排序(已实现)
  • 若数值相同,则数组键的顺序位置不改变,请问如何做到

举例:
上面的数组

<code>$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

根据上面排序后,键的顺序依次为

d => 10, a => 10, c => 10, z => 10, b => 11

我希望能实现的顺序为为

a => 10, z => 10, c => 10, d => 10, b => 11

http://3v4l.org/fsQkS

<code>function hasort($arr) {
    $a = $b = array();
    foreach($arr as $v => $k) $a[$k][] = $v;
    ksort($a);
    foreach($a as $v => $i) 
        foreach($i as $k) $b[$k] = $v;
    return $b;
}
$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
$a = hasort($a);
print_r($a);
/**
Array
(
    [a] => 10
    [z] => 10
    [c] => 10
    [d] => 10
    [b] => 11
)
**/
</code>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage