我有一个id的关联数组。在控制器中,我想检查收到的数组是否为空。我已经为它编写了以下代码,但它不起作用。
$product1=$_POST['id'];
$productString = implode(" ",$product1);
echo $productString;
if(is_null($productString)){
echo "No Values";
}else {
echo "Values are present";
}
我也尝试过使用empty(),但在所有情况下,即使数组中没有值,我将其转换为字符串,也表示存在值。 在我的表中,视图文件中有5个固定行,因此,即使值为空,数组输出也会显示
Array (
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
)
欢迎任何帮助。
答案 0 :(得分:2)
如果您使用的是implode
,则表示您正在将数组转换为字符串。您可以trim( $productString ) == ""
$product1 = array( 0 => '', 1 => '', 2 => '', 3 => '', 4 => '' );
$productString = implode(" ",$product1);
if( trim( $productString ) == "" ){
echo "No Values";
}else {
echo "Values are present";
}
如果为空,表示数组的所有元素都是空字符串,则可以先使用array_filter
删除所有空元素。
$product1 = array( 0 => '', 1 => '', 2 => '', 3 => '', 4 => '' );
$product1 = array_filter( $product1 ); /* Remove all empty elements */
if( count( $product1 ) == 0 ){
echo "No Values";
}else {
echo "Values are present";
}
答案 1 :(得分:1)
您可以使用empty
函数http://php.net/manual/en/function.empty.php来检查数组的空白。但是您的$ _POST [' id']数组中有空行,要删除此行,您应该通过array_filter http://php.net/manual/en/function.array-filter.php过滤此行
$ids = array_filter($_POST['id']);
if (empty($ids)){
echo "No Values";
}else {
echo "Values are present";
}