【问题标题】:Sort PHP array?排序PHP数组?
【发布时间】:2009-05-11 07:51:48
【问题描述】:

我有以下?

$array1 = array();

$array2 = array($Id, $Name, $Count);

array_push($array1, $array2);

我想在 $count 上对 array1 进行排序?

sort()ksort() 不按我的要求做?

有什么想法吗?

谢谢

编辑:

我正在输入一个 ID 号、名称文本和名称出现的次数,所以我希望将具有最高计数的名称放在数组的顶部!!

【问题讨论】:

  • 我觉得这个问题令人困惑。您能否添加一个示例,说明输入数据的外观以及最终结果应该是什么?

标签: php arrays


【解决方案1】:

使用uasort() 通过回调函数进行排序。示例:

function sort_callback($a, $b) {
    if ($a[2] == $b[2]) {
        return 0;
    }

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

uasort($array1, 'sort_callback');

【讨论】:

    【解决方案2】:

    我对你提出问题的方式有点困惑,但你是在尝试做这样的事情吗?

    function order_by($data, $field_name) {
    
        $code = "return strnatcmp(\$a['$field_name'], \$b['$field_name']);";
        usort($data, create_function('$a,$b', $code));
        return $data;
    
    }
    

    所以,例如:

    $array1 = array();
    $array1[] = array('Id' => 1, 'Name' => 'YT', 'Count' => 30);
    $array1[] = array('Id' => 2, 'Name' => 'Da5id', 'Count' => 56);
    $array1[] = array('Id' => 3, 'Name' => 'Fido', 'Count' => 12);
    $array1[] = array('Id' => 4, 'Name' => 'Hiro', 'Count' => 45);
    
    echo "<pre>";
    print_r($array1);
    echo "</pre>";
    
    $array2 = order_by($array1, 'Count');
    
    echo "<pre>";
    print_r($array2);
    echo "</pre>";
    

    【讨论】:

      猜你喜欢
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 2019-01-16
      • 2017-02-18
      • 1970-01-01
      相关资源
      最近更新 更多