从概念上讲,如果所有元素都未设置,那么php数组会发生什么?

时间:2013-12-14 15:03:06

标签: php arrays unset

从概念上讲,如果数组中的所有元素都未设置,会发生什么?请参阅以下代码并举例:

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

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

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

$ ourArray == array() null

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

密钥不会被洗牌或重新编号。 unset()键被删除,其他键保留。因此数组仍然存在,只有元素被删除。是的,阵列将保留。

答案 2 :(得分:1)

它应该是一个没有任何值的数组。从技术上讲,它与array()

相同

答案 3 :(得分:1)

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

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

?>

<强>输出

array(0) { }

答案 4 :(得分:1)

  

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

  

或者数组是否为空?

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

<?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