繁体   English   中英

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

[英]How to Check if Multi-Dimensional Associative Array is Empty

我有一个数组如下:

$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>";
}

我觉得我想念这里的人了。

有一些PHP函数可以完成不同的工作:


isset —确定是否设置了变量并且不为NULL

例:

if(isset($list_array)){//do something} $ 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;}

空应该工作:

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

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

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

  1. 尝试1中未关闭括号
  2. 在您的for循环中,您是从1开始而不是从0开始(因此,您正在考虑该数组将类似于array(1=>..., 2=>..., 3=>...) ,虽然实际上是array(0=>..., 1=>..., 2=>...)

因此,这是您的代码,已修复:

$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>";
}

您可以在这里尝试,只需简单地复制并粘贴即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM