我通常使用Python,Java或C编写代码。我正在使用PHP进行项目,而我正在阅读PHP中的数组,我完全感到困惑。如果我理解正确,PHP中的数字索引不一定对应于位置,只是像Python中的dict中的键。因此,当您对PHP数组进行随机播放时,元素的顺序将会改变,但它们的键将保持不变。所以当调用array[9]
时,如果shuffle按顺序排列元素,你实际上可能会得到数组的第一个元素。这提出了一堆问题:
那么,PHP数组总是只是某种有序的哈希表吗? 这对开销意味着什么?在Python中,列表的功能类似于 经典的数组数据结构和字典更加顺畅 哈希结构。 PHP似乎通过赋予唯一性来组合这两者 每个值的键和跟踪这些值的顺序。如果我想使用关联数组结构进行恒定时间查找,那么由于这种排序开销,我处于比使用Python字典更糟糕的位置吗?是否只有数组或仅哈希表的PHP数据结构?
从编号的PHP数组中删除值时会发生什么?如果我
有一个数组,[1, 2, 3, 4, 5]
,我从数组中删除4,然后
尝试访问array[3]
,是否会给我一个错误,因为我
用键3删除元素?或者PHP做某种键
在这种情况下调整?
如果您更改数组的顺序(即通过排序或单词)
shuffle),是指数对应的唯一方法
使用array_values()
将数组复制到新数组的位置。
答案 0 :(得分:2)
此代码:
$arr = array(0,1,2,3,4);
unset($arr[3]);
echo $arr[3]; // undefined index warning, execution continues;
echo isset($arr[3]) ? $arr[3] : '';
print_r($arr);
print_r()
输出:
Array
(
[0] => 0
[1] => 1
[2] => 2
[4] => 4
)
这depends on the function you choose。有些维护索引关联,有些则没有。
永远不要指望两个看似相似的PHP函数表现得彼此相似。这是编程语言的“英语”:充满了从其他语言中窃取的废话和大量相互矛盾的惯例,但每个人都说出来,所以跳上自由列车。
“穆尔萨。