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() の前に、配列からいくつかの要素を unset() しています。それはこれと関係がありますか?

4

3 に答える 3

1

のサポートは、バージョン 5.4.0 以降SORT_FLAG_CASEの PHP でのみ登場しました。

それがないと、キーは大文字と小文字を区別して並べ替えられます。そのため、( >として)'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 に答える