问题描述
$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。