【问题标题】:How to order in one specific array?如何订购一个特定的数组?
【发布时间】:2016-12-19 15:43:44
【问题描述】:

我得到一个包含多个数组的数组和一个包含 1 2 3 4 5 6 7 8 等顺序的值 ....

我不能改变这个结构

["Categ1"]=>
 array(3) {
   ["order"]=>
   string(1) "5"
   [0]=>
   array(5) {
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     NULL
   }
   [1]=>
   array(5) {
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     NULL
   }
 }
 ["Categ2"]=>
 array(3) {
   ["order"]=>
   string(1) "2"
   [0]=>
   array(5) {
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     NULL
   }
   [1]=>
   array(5) {
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     NULL
   }
 }

我需要的很简单,但我找不到解决方案:

["Categ2"]=>
array(3) {
  ["order"]=>
  string(1) "2"
  [0]=>
  array(5) {
    ["content"]=>
    string(x) "xxx"
    ["content"]=>
    string(x) "xxx"
    ["content"]=>
    string(x) "xxx"
    ["content"]=>
    string(x) "xxx"
    ["content"]=>
    NULL
  }
  [1]=>
  array(5) {
    ["content"]=>
    string(x) "xxx"
    ["content"]=>
    string(x) "xxx"
    ["content"]=>
    string(x) "xxx"
    ["content"]=>
    string(x) "xxx"
    ["content"]=>
    NULL
  }
}
["Categ1"]=>
 array(3) {
   ["order"]=>
   string(1) "5"
   [0]=>
   array(5) {
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     NULL
   }
   [1]=>
   array(5) {
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     string(x) "xxx"
     ["content"]=>
     NULL
   }
 }

只是一个带有订单价值的简单订单

我还没有在 stackoverflow 上找到解决方案

【问题讨论】:

标签: php arrays


【解决方案1】:

您需要定义一个自定义排序函数并将其交给一个php排序函数。例如uasort

这个简约的例子表明它非常好。

$cats = [
    'cat1' => [
        "order" => 5,
        ["foo" => "bar"]
    ],
    'cat2' => [
        "order" => 3,
        ["foo" => "bar"]
    ]
];

uasort($cats, function($a, $b){
    return $a['order'] > $b['order'];
});

var_dump($cats);

将输出:

 array (size=2)   
 'cat2' => 
    array (size=2)
      'order' => int 3
      0 => 
        array (size=1)
          'foo' => string 'bar' (length=3)   
 'cat1' => 
    array (size=2)
      'order' => int 5
      0 => 
        array (size=1)
          'foo' => string 'bar' (length=3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2014-05-07
    • 1970-01-01
    • 2018-03-31
    相关资源
    最近更新 更多