krsort似乎不适用于特定情况

时间:2013-09-12 15:57:05

标签: php

以下是代码:

var_dump($images);
array(2) { 
["main_product_image"]=> array(1) { ["bb2018.jpg"]=> string(63) "...018.jpg" }
["XIMAGE"]=> array(1) { ["bb2018x.jpg"]=> string(64) "...18x.jpg" } 
} 

krsort($images, SORT_STRING | SORT_FLAG_CASE) ;

var_dump($images);
array(2) { 
["main_product_image"]=> array(1) { ["bb2018.jpg"]=> string(63) "...018.jpg" } 
["XIMAGE"]=> array(1) { ["bb2018x.jpg"]=> string(64) "...018x.jpg" } }

你可以看到krsort没有效果。为什么? 编辑:在krsort()之前我没有设置()数组中的一些元素。这可能与此有关吗?

3 个答案:

答案 0 :(得分:1)

SORT_FLAG_CASE支持仅在PHP since version 5.4.0中出现。

如果没有它,密钥将以区分大小写的方式进行反转,这就是'XIMAGE'将遵循'main_image''X'> 'm')的原因。

请注意,如果您尝试在PHP版本上使用该标志,则会通知PHP。 5.4(因为那里没有定义常数)。

答案 1 :(得分:0)

ksort()不是递归的。

尝试使用ksort($images['main_product_image'],然后ksort($images['XIMAGE'])

答案 2 :(得分:0)

$images = array(
  "main_product_image" =>
    array(
      "bb2018.jpg"=> "...018.jpg"
    ),
  "XIMAGE"=>
    array(
      "bb2018x.jpg" => "...18x.jpg"
    )
) ;


krsort($images, SORT_STRING | SORT_FLAG_CASE);
var_dump($images);

输出:

array(2) { 'XIMAGE' => array(1) { 'bb2018x.jpg' => string(10) "...18x.jpg" } 'main_product_image' => array(1) { 'bb2018.jpg' => string(10) "...018.jpg" } } 

一切正常。