排序(数组)的意外结果

时间:2015-02-19 14:36:56

标签: php arrays sorting

奇.....     

// array sort test

$_ar = array(
  0 => "2015-02-23",
  1 => "2015-02-21",
  2 => "2015-02-28",
  3 => "2015-03-20",
  4 => "2015-03-14",
  5 => "2015-03-21",
  6 => "2015-02-21",
  7 => "2015-02-28",
  8 => "2015-03-07",
  9 => "2015-03-14",
);
$_ar = sort($_ar);

var_dump($_ar);
// returns bool(true)

$__ar = array(
  0 => "2015 02 23",
  1 => "2015 02 21",
  2 => "2015 02 28",
  3 => "2015 03 20",
  4 => "2015 03 14",
  5 => "2015 03 21",
  6 => "2015 02 21",
  7 => "2015 02 28",
  8 => "2015 03 07",
  9 => "2015 03 14",
);
$__ar = sort($__ar);

var_dump($__ar);
// returns bool(true)

$ar = array(
  0 => "20150223",
  1 => "20150221",
  2 => "20150228",
  3 => "20150320",
  4 => "20150314",
  5 => "20150321",
  6 => "20150221",
  7 => "20150228",
  8 => "20150307",
  9 => "20150314",
);

$ar = sort($ar);

var_dump($ar);
// returns bool(true)

我希望这会返回按日期值排序的数组。我想也许是 - (连字符)或空格,但在我的所有例子中,我的PHP var_dump只为每个实例返回bool(true)。有人可以证实他们是一样的,或者指出我必须缺少的东西...... 我试过asort() - 仍然是一样的。

2 个答案:

答案 0 :(得分:2)

您不必指定sort()的返回值。有关sort()的详细信息,请参阅手册:http://php.net/manual/en/function.sort.php

从那里引用:

  

成功时返回TRUE,失败时返回FALSE。

就这样:

sort($_ar);

旁注:

我不建议您在名称的开头定义带下划线的变量,因为这已被定义的php变量使用,例如超级全局或魔术常数

答案 1 :(得分:1)

sortasort函数返回bool值。只需调用此函数,它将对数组进行排序,不存储它,返回true或false。使用下面的代码

// array sort test

$_ar = array(
  0 => "2015-02-23",
  1 => "2015-02-21",
  2 => "2015-02-28",
  3 => "2015-03-20",
  4 => "2015-03-14",
  5 => "2015-03-21",
  6 => "2015-02-21",
  7 => "2015-02-28",
  8 => "2015-03-07",
  9 => "2015-03-14",
);
 sort($_ar);

var_dump($_ar);
// returns bool(true)

$__ar = array(
  0 => "2015 02 23",
  1 => "2015 02 21",
  2 => "2015 02 28",
  3 => "2015 03 20",
  4 => "2015 03 14",
  5 => "2015 03 21",
  6 => "2015 02 21",
  7 => "2015 02 28",
  8 => "2015 03 07",
  9 => "2015 03 14",
);
$__ar = sort($__ar);

var_dump($__ar);
// returns bool(true)

$ar = array(
  0 => "20150223",
  1 => "20150221",
  2 => "20150228",
  3 => "20150320",
  4 => "20150314",
  5 => "20150321",
  6 => "20150221",
  7 => "20150228",
  8 => "20150307",
  9 => "20150314",
);

sort($ar);

var_dump($ar);
// returns bool(true)

希望这有助于你