PHP —删除最后一个元素后,数组的值为空吗?

问题描述

我正在从PHP中的数组中删除一个元素:

$images = array('img1.jpg','img2.jpg','img3.jpg','no-image.jpg');
if (in_array('no-image.jpg',$images)) {
  $imgIndex = array_search('no-image.jpg',$images);
  array_splice($images,$imgIndex,1);
}

然后我要检查以确保$images数组不为空:

if (!empty($images)) {
  //Some code
}

但是,如果我的数组仅包含no-image.jpg并且删除了它,empty()会返回true还是false?

解决方法

是的,您的数组将评估为空。从PHP手册:

The following values are considered to be empty:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)

所以:

$images = array('no-image.jpg');
if (in_array('no-image.jpg',$images)) {
  $imgIndex = array_search('no-image.jpg',$images);
  array_splice($images,$imgIndex,1);
}
echo var_dump(empty($arr)); //Will output bool(true)

并且:

$images = array('img1.jpg','img2.jpg','img3.jpg','no-image.jpg');
if (in_array('no-image.jpg',1);
}
echo var_dump(empty($arr)); //Will output bool(false)
,

放在一边-您可以换出in_array,进行搜索和拼接以进行搜索并取消设置。

<?php    
$images = ['no-image.jpg'];
$imgIndex = array_search('no-image.jpg',$images);
if($imgIndex !== false) {
    unset($images[$imgIndex]);
}

var_dump($images);
var_dump(empty($images));

输出:

array(0) {
}
bool(true)

如果您不关心array_splice为您提供的重新索引,则可以使用unset。