1

这是代码:

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() 之前,我正在取消设置()数组中的一些元素。这可能与此有关吗?

4

3 回答 3

1

支持SORT_FLAG_CASE仅出现在 PHP 5.4.0 版本之后

没有它,键将按大小写敏感地反转排序,这就是为什么'XIMAGE'会跟随'main_image'(如'X'> 'm')。

请注意,如果您尝试在 PHP 版本 < 5.4 上使用该标志,PHP 将发出通知(因为该常量未在此处定义)。

于 2013-09-12T17:53:03.593 回答
0

ksort() 不是递归的。

尝试使用ksort($images['main_product_image']then ksort($images['XIMAGE'])

于 2013-09-12T16:09:08.353 回答
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" } } 

它工作正常。

于 2013-09-12T16:28:49.260 回答