我有一个数组,想要创建一个新的数字数组。这看起来像这样:
$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
答案 0 :(得分:3)
所有PHP数组都是关联的。口语中没有“数字阵”所期望的东西。密钥可以是字符串或数字,也无关紧要。密钥仍按其插入顺序排序,并且从不按其值隐式排序。我不会对这种行为感到惊讶:
$arr['a'] = 1;
$arr['c'] = 3;
$arr['b'] = 2;
// ['a' => 1, 'c' => 3, 'b' => 2]
完全相同的机制在你的“数字数组”中起作用。
如果要对密钥进行排序,则需要使用ksort
明确表示。