PHP数字数组顺序
我有一个数组,想创建一个新的数值数组。这看起来像这样:PHP数字数组顺序,php,arrays,indexing,numeric,implode,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] =
$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数组都是关联的。口语中没有“数字数组”这种东西。键可以是字符串也可以是数字,这无关紧要。键仍然按其插入顺序排序,从不按其值隐式排序。我想你不会对这种行为感到惊讶:
$arr['a'] = 1;
$arr['c'] = 3;
$arr['b'] = 2;
// ['a' => 1, 'c' => 3, 'b' => 2]
在你的“数字数组”中,同样的机制也在起作用
如果要对键进行排序,需要显式使用。php中没有任何
numeric
数组。所有这些都是关联的。它与我的问题无关,因此我没有发布它:FYI ist是我从数据库中读取的字符串,其格式如下:123_123_123_abc:(abc:123)
$created_new=array_fill(0,5',)代码>初始化应该解决您的问题。True。你可以使用print\r($created\u new)
检查数组内容。好吧,我想我不得不接受它。虽然这有点奇怪,但我会在以后的工作中记住这一点。谢谢:)@JRsz其他语言有单独的数字索引列表和键值映射;PHP将两者合并为一种类型的关联有序键值映射。您不必接受它。您可以使用ksort
按照您期望的顺序显式地对密钥进行排序,这是正确的,但是如果我以我需要的方式创建密钥,那么我就不会有这种开销。因此,从表现的角度来看,人们只需记住这一点:D