如何检查多维关联数组是否为空

时间:2014-05-28 07:53:24

标签: php arrays multidimensional-array

我有一个数组如下:

$list_array = array();

$list_array[] = array (
                 'id' => 1,
                 'name' => 'Sean',
                 'codename' => 'Maverick'
                 );

$list_array[] = array (
                 'id' => 2,
                 'name' => 'Matt',
                 'codename' => 'Diesel'
                 );

$list_array[] = array (
                 'id' => 3,
                 'name' => 'Bonnie',
                 'codename' => 'Princess'
                 );

我想知道如何查看它是否为空。我在网站上看了几下并尝试了一些东西,但它没有用。以下是我尝试过的事情。

Attempt 1:
if (empty($list_array)
    echo "Array is empty";


Attempt 2:
$arr_empty = true;
$arr_length = count($list_array);
echo "Length: " . $arr_length . "<br>";
for ($z=1; $z<=$arr_length; $z++)
{
    $arr_length2 = count($list_array[$z]);
    echo $z . " Length2: " . $arr_length2 . "<br>";
    if (empty($list_array[$z]))
        echo $z . " Is Empty<br>";
}

我觉得我在这里错过了这种意志。

3 个答案:

答案 0 :(得分:2)

有一些PHP函数可以做一些不同的事情:


isset - 确定变量是否设置且不是NULL

示例:

如果将$ list_array设置为NULL以外的值,

if(isset($list_array)){//do something}将执行某些操作。

请参阅:http://uk3.php.net/manual/en/function.isset.php


empty - 确定变量是否为空。如果变量或数组是空字符串,false,array(),NULL,0或未设置的变量,则此函数返回true。我更喜欢使用empty函数。

示例:

if(!empty($list_array)){
    //do something with array here, such as a foreach or while loop.
}

请参阅:http://uk3.php.net/empty


is_null - 通过返回true或false来标识变量是否为NULL。仅当变量为null时,它才返回true。 is_null()isset()相反,除了isset()也可以应用于未知变量的一个区别,而is_null()只能用于声明的变量。

示例: if(is_null($var)){ //do something }

请参阅:http://uk3.php.net/manual/en/function.is-null.php


让我们坚持empty

if(empty($list_array)){ $msg = "Array is empty!"; }
if(!isset($msg)){echo $msg;}

答案 1 :(得分:1)

空应该起作用:

if (empty($list_array))
    echo "Array is empty";
else
    echo "Array is not empty";

您的循环不起作用,因为PHP数组基于零,您应该从零开始并在$z < $arr_length

时继续

答案 2 :(得分:1)

我在您的代码中发现了两个错误:

  1. 在尝试1
  2. 中未关闭括号
  3. 在你的for循环中,你从1开始而不是从0开始(所以,你考虑的是数组类似于array(1=>..., 2=>..., 3=>...),而实际上是array(0=>..., 1=>..., 2=>...)
  4. 所以,这是你的代码,修复:

    $list_array = array();
    
    $list_array[] = array (
                     'id' => 1,
                     'name' => 'Sean',
                     'codename' => 'Maverick'
                     );
    
    $list_array[] = array (
                     'id' => 2,
                     'name' => 'Matt',
                     'codename' => 'Diesel'
                     );
    
    $list_array[] = array (
                     'id' => 3,
                     'name' => 'Bonnie',
                     'codename' => 'Princess'
                     );
    
    //Attempt 1:
    if (empty($list_array))
        echo "Array is empty";
    
    
    //Attempt 2:
    $arr_empty = true;
    $arr_length = count($list_array);
    echo "Length: " . $arr_length . "<br>";
    for ($z=0; $z<$arr_length; $z++)
    {
        $arr_length2 = count($list_array[$z]);
        echo $z . " Length2: " . $arr_length2 . "<br>";
        if (empty($list_array[$z]))
            echo $z . " Is Empty<br>";
    }
    

    您可以通过简单的复制粘贴尝试here