检查关联数组是否为空

时间:2018-02-08 06:33:17

标签: php arrays

我有一个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] => 
)

欢迎任何帮助。

2 个答案:

答案 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";
}

http://php.net/manual/en/function.array-filter.php

答案 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";
}