PHP按键和值排序多维关联数组

时间:2017-07-26 16:37:38

标签: php arrays sorting

我正在尝试按键中的日期和名称的值对以下数据进行排序。

目的是获得一个很好的日期排序数组,其中包含内部数组中所有名称的字母顺序。

to spread-culture

  ask one-of turtles [
    let tag-index random 11
    let my-tag-at-index item tag-index t-culture-tags

    if any? other turtles in-radius 10 [
      ask other turtles in-radius 10 [
        set t-culture-tags replace-item tag-index t-culture-tags my-tag-at-index
        set color sum t-culture-tags + 50
      ]
    ]
  ]
  tick

end

我很确定我应该使用Array ( [2017-07-27] => Array ( [0] => stdClass Object ( [Job] => stdClass Object ( [Name] => Orange ) ) [4] => stdClass Object ( [Job] => stdClass Object ( [Name] => Apple ) ) ) [2017-07-22] => Array ( [6] => stdClass Object ( [Job] => stdClass Object ( [Name] => Apple ) ) [7] => stdClass Object ( [Job] => stdClass Object ( [Name] => Orange ) ) ) [2017-07-29] => Array ( [9] => stdClass Object ( [Job] => stdClass Object ( [Name] => Orange ) ) [11] => stdClass Object ( [Job] => stdClass Object ( [Name] => Plumb ) ) ) ) ,但无法获得理想的结果。

2 个答案:

答案 0 :(得分:0)

如果要对对象属性进行排序,则必须拆分代码,使用usort函数。

$ arr是你的数组:

uksort($arr, 'dateCmp');
foreach($arr as &$sub){
    usort($sub, 'propCmp');
}

function dateCmp($a, $b){
    return (strtotime($a) < strtotime($b) ? -1 : 1);
}

function propCmp($a, $b){
    return ($a->Job->Name < $b->Job->Name ? -1 : 1);
}

答案 1 :(得分:0)

请尝试以下代码,

$sorted_vals = array();
ksort($multiArrs);
foreach($multiArrs as $key => $value) { // $multiArrs = your data array
    $columns = null;
    foreach ($value as $index => $element) {
        $columns[] = $element->Job;
    }
    $temp = $value;
    array_multisort($columns, SORT_ASC, $temp);
    $sorted_vals[$key] = $temp;
}