【问题标题】:ksort doesn't seem to workksort 似乎不起作用
【发布时间】:2015-03-23 14:54:39
【问题描述】:
echo '<pre>'.print_r($listings,1).'</pre>';

ksort($listings, SORT_NUMERIC);

echo '<pre>'.print_r($listings,1).'</pre>';

输出:

Array
(
    [quick-brown-fox] => Array
        (
            [0] => Quick-brown-fox
            [1] => quick-brown-fox
            [4] => general_thumbs/quick-brown-fox.jpg
            [2] => 320
            [3] => 240
        )

)

Array
(
    [quick-brown-fox] => Array
        (
            [0] => Quick-brown-fox
            [1] => quick-brown-fox
            [4] => general_thumbs/quick-brown-fox.jpg
            [2] => 320
            [3] => 240
        )

)

我尝试了foreach,但它不会影响原始数组,而for 将不起作用,因为它是键,而不是索引。这种情况我该怎么办?

【问题讨论】:

  • 好吧,ksort() 确实对只有一个条目的数组进行了排序:quick-brown-fox => Array(5)。你需要做ksort($listings[0])
  • 我尝试了foreach,但它不会影响原始数组,并且for 不起作用,因为它是键,而不是索引
  • ksort($listings['quick-brown-fox'], SORT_NUMERIC);
  • @MarkBaker 谢谢,但其中可能有未知数量的数组,而不仅仅是一个。
  • @3zzy ksort 不是递归的。它不会深入您的数组并继续对每个子数组进行 ksorting。

标签: php ksort


【解决方案1】:

您在此 $listings 数组中嵌套了数组。要对其进行排序,请这样写:

foreach($listings as $k => $a){
    ksort($a, SORT_NUMERIC);
    $listings[$k] = $a;
}

【讨论】:

    【解决方案2】:
    array_walk(
        $listings,
        function(&$value) {
            ksort($value, SORT_NUMERIC);
        }
    );
    

    【讨论】:

      猜你喜欢
      • 2016-11-29
      • 2016-02-01
      • 2020-09-23
      • 2010-12-05
      • 2011-06-14
      • 2015-01-10
      • 2016-02-24
      • 2011-01-18
      • 2018-06-20
      相关资源
      最近更新 更多