-1

それはおそらくあまり意味がありません。配列に入れてソートできる値があり、それがすべての負のエントリの前またはすべての正のエントリの後に来るかどうかを知りたいです。

    $keys = array('m1' => 1, -500 => 1, 0 => 1, 1000 => 1, 'm' => 1, 5000 => 1, );

    foreach($keys as $k => $v){
    echo $k . '<br />';
}

戻り値

  -500
  m
  0
  m1
  1000
  5000
4

2 に答える 2

2
<?

$keys = array('m1' => 1, -500 => 1, 0 => 1, 1000 => 1, 'm2' => 1, 5000 => 1, );

ksort($keys, SORT_STRING);

foreach($keys as $k => $v){
    echo $k . '<br />';
}

?>

戻ります:

-500
0
1000
5000
m1
m2

正しい順序で並べたい場合は、すべての文字列キーを小文字のままにしてください。これにより、すべての整数の後に文字列が配置されます。

メソッドの例を次に示します: http://codepad.org/IBc3wnso

非キーを最初に取得するために私が考えることができる唯一の方法、それらにプレフィックスを付けることです:int--

<?

$keys = array('--m2' => 1, -500 => 1, 0 => 1, 1000 => 1, '--m1' => 1, 5000 => 1, );

ksort($keys, SORT_STRING);

foreach($keys as $k => $v){
    echo $k . "\n";
}

?>

戻ります:

--m1
--m2
-500
0
1000
5000

例: http://codepad.org/rwbrj3rJ

しかし、それはちょっとしたハックです。おそらくそれを達成するためのより良い方法があります。

于 2013-02-26T15:56:07.380 に答える
0

配列キーとして単一の文字が必要な場合は、chr(0) と chr(255) を試してください。

ちょっと待ってください。質問を変え続けると、返信するのが難しくなります。

キーとして -500 があります。これは単一の文字ではありません。

次に、下限値には -PHP_INT_MAX を使用し、上限値には PHP_INT_MAX を使用します。

于 2013-02-26T15:13:50.397 に答える