php中的array_key_exists与NULL值没有输出

时间:2014-07-09 12:52:33

标签: php arrays

我有以下查询:

//product density
$stmt_density = $conn->prepare("SELECT density FROM product_density
WHERE product_id = :productid ");
$stmt_density->execute(array(':productid' => "$pid"));
$density = $stmt_density->fetchAll(); 

如果密度不存在,则值为" NULL"。

var_dump($density);

给出以下输出:

array(1) { [0]=> array(2) { ["density"]=> NULL [0]=> NULL } } 

如果数组不为空,我需要检查数组是否有值,并提供选择选项。

3 个答案:

答案 0 :(得分:0)

尝试这样的事情

function check($array, $key)
{
    if(array_key_exists($key, $array)) {
        if (is_null($array[$key])) {
            echo $key . ' is null';
        } else {
            echo $key . ' is set';
        }
    }
}

答案 1 :(得分:0)

我认为您正在尝试检查数组中的空值try

function array_key_exists_r($needle, $haystack)
{
    foreach ($haystack as $v) {
        foreach ($v as $k=>$v1) {
            if(empty($v1) || $v1 ==$needle)
              $result[$k] = $v1;
        }
        if ($result) return $result;
    }
}
$r = array_key_exists_r('NULL', $density);
print_r($r); //Array ( [density] => [0] => ) 

函数将为所有空键或NULL键提供数组

答案 2 :(得分:0)

根据您是否希望从查询中获取多个结果可能会更改答案,特别是如果您回来说1个结果为NULL而另一个没有。但你可以做......

function validResult($density) {
    foreach($density as $item) {
        if($item["density"] == NULL) return false;
    }
    return true;
 }


 if(validResult($density))
     echo "We have values";
 else
     echo "Array contains null";

如果任何结果为null,则该函数将返回false,无论有多少都不为null