从Python背景中理解PHP数组

时间:2013-02-27 15:38:50

标签: php python

我通常使用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()将数组复制到新数组的位置。

1 个答案:

答案 0 :(得分:2)

  1. http://php.net/manual/en/class.splfixedarray.php
  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
     )
    
  3. depends on the function you choose。有些维护索引关联,有些则没有。

  4. 普罗蒂普:

    • 永远不要指望两个看似相似的PHP函数表现得彼此相似。这是编程语言的“英语”:充满了从其他语言中窃取的废话和大量相互矛盾的惯例,但每个人都说出来,所以跳上自由列车。

      “穆尔萨。