PHP数字数组顺序 [英] PHP numeric array order

查看:142
本文介绍了PHP数字数组顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have an array and want to create a new numeric array. This looks like this:

$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);

此版本运行正常,但前一个版本缺少一行,因此代码如下:

This version works just fine, but the previous was missing one line, so the code would be this:

$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被切换。如果它是一个关联数组,我会理解这一点,但因为它是一个数值数组,我假设索引在数字上增加并且如此订购。由于我有一个工作版本,我不需要帮助来修复此代码,而是理解代码行为的原因...

In the second code the string $created is in the wrong order. The index 4 and 3 are switched. If it would be an associative array I would understand this but as it is an numeric array I assume the indices to increase numerically and beeing ordered like this. As I have a working version I do not need help to fix this code but rather understand why the code behaves as it does...

最好的问候
JRsz

Best regards JRsz

推荐答案

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

All PHP arrays are associative. There's no such thing as a "numeric array" expect in colloquial speech. A key can be either a string or a number, it doesn't matter. Keys are still ordered by their order of insertion and never implicitly ordered by their value. You would not be surprised by this behaviour I assume:

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

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

The exact same mechanics are at work in your "numeric array".

如果您想对按键进行排序,则需要使用 ksort

If you want to sort your keys, you need to do so explicitly using ksort.

这篇关于PHP数字数组顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆