PHP 数值数组顺序

PHP numeric array order

我有一个数组,想创建一个新的数值数组。这看起来像这样:

$created_old = explode("_", $result[$i]["created"]);
$created_new = array();
$created_new[0] = $created_old[2];
$created_new[1] = $created_old[0];
$created_new[2] = $created_old[1];
$created_new[3] = "";
$created_new[4] = rtrim(explode(":", $created_old[3])[2], ")");

//Get name from the database

$created_new[3] = $name;

$created = implode("_", $created_new);

这个版本工作得很好,但是之前的版本少了一行,所以代码是这样的:

$created_old = explode("_", $result[$i]["created"]);
$created_new = array();
$created_new[0] = $created_old[2];
$created_new[1] = $created_old[0];
$created_new[2] = $created_old[1];
//$created_new[3] = ""; - I am missing
$created_new[4] = rtrim(explode(":", $created_old[3])[2], ")");

//Get name from the database

$created_new[3] = $name;

$created = implode("_", $created_new);

在第二个代码中,字符串 $created 的顺序错误。索引 4 和 3 被切换。如果它是一个关联数组,我会理解这一点,但由于它是一个数字数组,我假设索引在数字上增加并且像这样排序。因为我有一个工作版本,所以我不需要帮助来修复此代码,而是了解代码为何如此运行...

此致 JRsz

所有 PHP 数组都是关联的。在口语中没有 "numeric array" 期望的东西。键可以是字符串或数字,这无关紧要。键仍然按照它们的插入顺序排序,而不是按照它们的值隐式排序。我假设您不会对这种行为感到惊讶:

$arr['a'] = 1;
$arr['c'] = 3;
$arr['b'] = 2;
// ['a' => 1, 'c' => 3, 'b' => 2]

完全相同的机制在您的 "numeric array" 中发挥作用。

如果您想对键进行排序,您需要使用 ksort 明确地进行排序。