按列排序多维数组

时间:2013-11-17 01:29:10

标签: php arrays sorting multidimensional-array

我有一个多维数组,并尝试了我可以从这个网站找到的每个示例代码,按列进行排序。我尝试过没有一个片段有效,但由于某些原因,所有这些片段都会导致一些奇怪的排序。我不能为我的生活找出造成这种情况的原因,希望有人能指出来......

    if ($devices_xml = curl_get_file_contents($devices_url))
    {
        $devices = simplexml_load_string($devices_xml);

        $data = array(array());
        $counter = 0;

        foreach ($devices->item as $device)
        {
            $data[$counter]["id"] = $device->objid;
            $data[$counter]["probe"] = $device->probe;
            $data[$counter]["name"] = $device->device;

            $counter++;
        }

        array_sort_by_column($data, "probe");
        return $data;
    }

    return false;
}

我的多维排序功能适用于所有其他功能,但不是这样的,如下所示......

function array_sort_by_column(&$arr, $col, $dir = SORT_ASC)
{
    $sort_col = array();
    foreach ($arr as $key=> $row)
    {
        $sort_col[$key] = $row[$col];
    }

    array_multisort($sort_col, $dir, $arr);
}

结果看起来像这样。探针是开头的“DE-FRANKFURT”,名称是第二部分,如“EU-DE-010”

enter image description here

1 个答案:

答案 0 :(得分:1)

通过将SimpleXML对象转换为字符串来解决此问题。在完成之前,所有排序功能都没有正常工作,那么它是正确的。