【问题标题】:Conceptually what happens to a php array if all its elements are unset?从概念上讲,如果所有元素都未设置,php 数组会发生什么?
【发布时间】:2014-01-02 07:15:08
【问题描述】:

从概念上讲,所有元素都未设置的数组会发生什么?请参阅下面的代码和示例:

$ourArray = array(
    "1",
    "2",
    "3",
    "4"
);

foreach($ourArray as $key => $value){
    unset($ourArray[$key])
}

在这种情况下,整个数组是否被视为未设置?还是数组被认为是空的?

$ourArray == array() 还是 null

【问题讨论】:

  • 你试过var_dump()ing它吗?
  • 在必须调试 PHP 脚本时尝试 var_dump()。如果您提出问题,该元素会被删除。
  • var_dump() 返回一个空数组。这将表明该元素存在并且本身并未未设置。

标签: php arrays unset


【解决方案1】:

unset() 方法会破坏传递的变量。 因此,传递所有数组键 unset() 会破坏它们(而不是数组)并使实际数组为空。

1.取消设置所有元素

这样做会导致一个空的$array

foreach ($array as $k => $value)
    unset($array[$k];

var_dump($array) //array {}

2。取消设置整个数组

但是,将整个数组传递给 unset() 方法会破坏整个数组并导致 $array 为 NULL

unset($array)

var_dump($array) // NULL

【讨论】:

    【解决方案2】:

    在这种情况下,整个数组是否被视为未设置?

    或者数组被认为是空的?

    是的

    顺便说一句,您可以使用这些测试用例尝试自己的示例

    <?php
    
    echo isset($ourArray)?1:0; // "prints" 0 since array doesn't contain anything
    echo empty($ourArray)?1:0; // "prints" 1 since elements are not there !
    
    $ourArray = array(
        "1",
        "2",
        "3",
        "4"
    );
    echo empty($ourArray)?1:0; // "prints" 0 since elements are there !
    
    foreach($ourArray as $key => $value){
        unset($ourArray[$key]);
    }
    
    echo isset($ourArray)?1:0; // "prints" 1 since the array is set , only the elements are emptied
    echo empty($ourArray)?1:0; // "prints" 1 since the array elements are empty
    

    【讨论】:

    • 这很有帮助,谢谢。我将根据被认为是空的数组进行逻辑测试。这将给出我需要的结果。
    【解决方案3】:
    <?php
      $ourArray = array(
        "1",
        "2",
        "3",
        "4"
    );
    
    foreach($ourArray as $key => $value){
        unset($ourArray[$key]);
    }
    var_dump($ourArray);
    
    ?>
    

    输出

    array(0) { }
    

    【讨论】:

      【解决方案4】:

      它应该是一个没有任何值的数组。所以技术上它和array()是一样的

      【讨论】:

        【解决方案5】:

        键不会被打乱或重新编号。 unset() 键被简单地删除,其他键保留。所以数组仍然存在,只有元素被删除。是的,数组将保留。

        【讨论】:

          猜你喜欢
          • 2013-11-26
          • 2020-05-06
          • 2019-09-27
          • 2014-03-23
          • 2015-11-13
          • 1970-01-01
          • 2023-03-22
          • 2019-04-29
          • 1970-01-01
          相关资源
          最近更新 更多