首頁 > 後端開發 > php教程 > 请教一个PHP排序的问题

请教一个PHP排序的问题

WBOY
發布: 2016-06-06 20:43:56
原創
765 人瀏覽過

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

<code>$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
asort($a, SORT_NUMERIC);
var_dump($a);
</code>
登入後複製
登入後複製

打印结果如下:

<code>array(5) {
  'd' =>
  int(10)
  'a' =>
  int(10)
  'c' =>
  int(10)
  'z' =>
  int(10)
  'b' =>
  int(11)
}
</code>
登入後複製
登入後複製

问题:

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

举例:
上面的数组

<code>$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
</code>
登入後複製
登入後複製

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

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>
登入後複製
登入後複製

打印结果如下:

<code>array(5) {
  'd' =>
  int(10)
  'a' =>
  int(10)
  'c' =>
  int(10)
  'z' =>
  int(10)
  'b' =>
  int(11)
}
</code>
登入後複製
登入後複製

问题:

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

举例:
上面的数组

<code>$a = array('a' => 10, 'z' => 10, 'c' => 10, 'b' => 11, 'd' => 10);
</code>
登入後複製
登入後複製

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

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>
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板