【问题标题】:Sorting array of array php对数组php进行排序
【发布时间】:2016-01-09 17:02:51
【问题描述】:

我正在开发一个基于 codeigniter 的小项目,我不是 php 开发人员,这是我的问题:

       foreach ($checkeds['id_iscritti'] as $checked){

        $iscritto = $this->pellegrinaggio_iscritti_m->get_iscritto($checked);

        $utente = $this->utenti_m->get_utente($iscritto[0]->id_utente);

        echo ("utente:   <pre> ");var_dump($utente);echo ("   </pre> \n\n");

    }

这是代码,它基本上是生成一个关联数组

这就是我从 var_dump 获得的:

array(1) { [0]=>
  object(stdClass)#38 (27) {
    ["id"]=>
    string(3) "254"
    ["nome"]=>
    string(13) "Padre EDUARDO"
    ["cognome"]=>
    string(9) "ANATRELLA"    
  }
}

utente:
 array(1) {
  [0]=>
  object(stdClass)#37 (27) {
    ["id"]=>
    string(3) "338"
    ["nome"]=>
    string(4) "ELSA"
    ["cognome"]=>
    string(5) "PAONE"      
  }
}

如何按索引“nome”对数组 $utenti 进行排序? 我花了几个小时来了解这种数组是如何工作的,但没有任何结果,你能帮帮我吗?

【问题讨论】:

    标签: php arrays codeigniter associative


    【解决方案1】:

    这是你想要的功能: http://php.net/manual/en/function.array-multisort.php

    您的代码应如下所示:

    $sorted = array_multisort($utente, 'nome', SORT_ASC);
    

    【讨论】:

    • 如果我错了请纠正我,但我确定array_multisort() 只对数组数组进行排序,而不是对对象数组进行排序?
    • 看来你是对的,我错过了。另一个答案(你的)是正确的。
    【解决方案2】:

    PHP 的 usort() 函数允许您使用自定义函数对数组进行排序。

    假设您的对象数组存储在$utente 中,下面将使用匿名比较函数将每个对象与其他对象进行比较。

    在以下代码中,$utente 数组将按 nome 值升序排序。

    usort($utente, function($a, $b){
       if ($a->nome > $b->nome) {
          return 1;
       }elseif($a->nome < $b->nome){
          return -1;
       }else{
         return 0;
       }
    });
    

    更多详情请关注http://php.net/manual/en/function.usort.php

    【讨论】:

      猜你喜欢
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多