【问题标题】:Cannot sort array index php无法排序数组索引php
【发布时间】:2019-07-30 09:23:06
【问题描述】:

我有一个这样的数组,

输出:

 Array
    (
        [3] => stdClass Object
            (
                [id] => 11591
                [title] => abc
            )

        [2] => stdClass Object
            (
                [id] => 11592
                [title] => xyz
            )

        [0] => stdClass Object
            (
                [id] => 11589
                [title] => abg
            )

        [1] => stdClass Object
            (
                [id] => 11590
                [title] => asw
            )

    )

Codeigniter 代码:

foreach($results as $rowData)
{
    if($rowData->title=='xyz')
    {
        $eventperDayArray['0']=$rowData;
    }
    else if($rowData->title=='asw')
    {
        $eventperDayArray['1']=$rowData;
    }
    else if($rowData->title=='abc')
    {
        $eventperDayArray['2']=$rowData;
    }
    else if($rowData->title=='abg')
    {
        $eventperDayArray['3']=$rowData;
    }
    if($i==5)
    {
        print_r($eventperDayArray);
        die();
        break;
    }
    $i++;
}

我正在从数组中搜索数据并想要对其进行排序。现在当我print_r($eventperDayArray);
我得到类似这样的输出,现在我想对其进行排序,以使 0 索引应该首先出现,依此类推。 我使用了sortksort,但它没有工作它打印1

【问题讨论】:

  • ksort 对提供的数组进行排序,它不返回排序后的数组。使用它,然后查看$eventperDayData 中的内容。当你回显一个布尔值时返回true1,表示它完成了排序。
  • 你想达到什么目的?

标签: php codeigniter codeigniter-3


【解决方案1】:

使用 ksort() 按键排序

foreach($results as $rowData) {
if ($rowData->title == 'MORNING') {
    $eventperDayArray['0'] = $rowData;
} else if ($rowData->title == 'AFTERNOON') {
    $eventperDayArray['1'] = $rowData;
} else if ($rowData->title == 'EVENING') {
    $eventperDayArray['2'] = $rowData;
} else if ($rowData->title == 'NIGHT') {
    $eventperDayArray['3'] = $rowData;
}
if ($i == 5) {
    print_r($eventperDayArray);
    die();
    break;
}
$i++;
}

ksort($eventperDayArray);

eventperDayArray

【讨论】:

    【解决方案2】:

    ksort() 确实按数组上的键排序。

    <?php
    
    $arr = [];
    $o = new stdclass();
    $o->id = 11591;
    $o->title = 'abc';
    $arr[3] = $o;
    $o = new stdclass();
    $o->id = 11592;
    $o->title = 'xyz';
    $arr[2] = $o;
    $o = new stdclass();
    $o->id = 11589;
    $o->title = 'abg';
    $arr[0] = $o;
    $o = new stdclass();
    $o->id = 11590;
    $o->title = 'asw';
    $arr[1] = $o;
    
    ksort($arr);
    print_r($arr);
    

    演示: https://3v4l.org/hkLCc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2016-06-03
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      相关资源
      最近更新 更多