Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数字数组顺序_Php_Arrays_Indexing_Numeric_Implode - Fatal编程技术网

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