PHP值在负数之前和数字之后

时间:2013-02-26 15:10:49

标签: php arrays

这可能没有多大意义。我想知道是否有任何值可以放入数组并对其进行排序,它将在所有否定条目之前或在所有正数条目之后。

    $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

2 个答案:

答案 0 :(得分: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

但这有点像黑客。可能有更好的方法来实现这一目标。

答案 1 :(得分:0)

如果您想将单个字符作为数组键,请尝试chr(0)和chr(255)。

等一下:如果你不断更改问题,很难回复。

你有-500作为一个键:这不是一个字符。

然后,使用-PHP_INT_MAX表示较低值,使用PHP_INT_MAX表示较高值。