php sort multidimensional array:bool(true)而不是排序数组

时间:2017-10-23 12:22:15

标签: php sorting multidimensional-array

我有一个多维数组$ aFacetConfig,我喜欢对每个父元素的值进行排序,例如" TOPIC"和" GENRE"

$ aFacetConfig包含

 ["TOPIC"]=>
  array(2) {
    ["edit_type"]=>
    string(10) "predefined"
    ["values"]=>
    array(5) {
      [0]=>
      string(9) "astronomy"
      [1]=>
      string(3) "law"
      [2]=>
      string(5) "music"
      [3]=>
      string(10) "chronicles"
    }
  }
  ["GENRE"]=>
  array(2) {
    ["edit_type"]=>
    string(10) "predefined"
    ["values"]=>
    array(40) {
      [0]=>
      string(13) "antiphonarium"
      [1]=>
      string(14) "benedictionale"
      [2]=>
      string(6) "biblia"
      [3]=>
      string(2) "at"
    }
  }

现在我正在尝试对数组值进行排序:

$aSortedFacets = usort($aFacetConfig[$oPropertyCategory->name], function($a, $b) {
    $a['values'] <=> $b['values']; 
});

var_dump($ aSortedFacets)只是打印&#34; 1&#34;

如何对值进行排序?

2 个答案:

答案 0 :(得分:1)

您好,您可以看到文档:

MarqueeTextControl

usort获取数组的引用,因此他将更改原始var并且不创建副本。

usort($aFacetConfig[$oPropertyCategory->name], function($a, $b) {
    return $a['values'] <=> $b['values']; 
});
var_dump($aFacetConfig);

答案 1 :(得分:0)

您的排序值位于$aFacetConfig[$oPropertyCategory->name]内。 documentation解释输出只是一个布尔值,数组是reference传递的。

如果你想声明一个其他变量,这应该有效:

$aSortedFacets = $aFacetConfig[$oPropertyCategory->name];
usort($aSortedFacets, function($a, $b) {
    return $a['values'] <=> $b['values']; 
});
var_dump($aSortedFacets);