PHP数字数组顺序

时间:2016-06-16 08:39:00

标签: php arrays indexing numeric implode

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

$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

1 个答案:

答案 0 :(得分:3)

所有PHP数组都是关联的。口语中没有“数字阵”所期望的东西。密钥可以是字符串或数字,也无关紧要。密钥仍按其插入顺序排序,并且从不按其值隐式排序。我不会对这种行为感到惊讶:

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

完全相同的机制在你的“数字数组”中起作用。

如果要对密钥进行排序,则需要使用ksort明确表示。