如果数组返回至少一个值,PHP只回显一次变量

时间:2012-07-12 22:55:51

标签: php

好的,我从ARRAY的数据库中返回值。有些页面有3个值,有些页面有10个,其​​他页面有0个。

如果页面返回一个值,我希望标签显示为ONCE,因此不在循环中。 标签 - &gt; $key_label = '<span class="hl_reference"><u>key references:</u></span>';

如果网页没有$reference_keys,我不希望标签出现,因此$key_label = false;

所以我想查看ARRAY的值,如果&gt; = 1:标签也会出现。

我的代码似乎没有验证if(array($value => 1) && !$key_label)我猜我的语法错误或者我应该使用不同的函数?

感谢您的帮助!

$key_label = false;
$key_label = '<span class="hl_reference"><u>key references:</u></span>';

foreach($reference_keys as $value)
{
    echo $value .'&nbsp;';
}

if(array($value => 1) && !$key_label) 
{
    $key_label = true; 
    echo $key_label;
};

------------------------------- UPDATE --------------- --------------

此代码似乎仅适用于只有1个reference_key的网页...奇怪为count is set to >= 1

$key_label = '<span class="hl_reference"><u>key references:</u></span>';

foreach($reference_keys as $value)
{
   echo $value .'&nbsp;';
}
$result = count($value);
if ($result > 1)
{
  echo $key_label;
}   

------------------------------- UPDATE --------------- --------------

John C的最新代码似乎有效但在每页的第二个$reference_key之前显示“1”。但它只显示在$reference_key

的网页上
$key_flag = false;
$key_label = '<span class="hl_reference"><u>key references:</u></span>';

foreach($reference_keys as $value)
{
if (!empty($value)) {
    if (!$key_flag) {
        echo $key_label;
        $key_label = true;
    }
    echo $value .'&nbsp;';
}
};

------------------------------- UPDATE --------------- --------------

John C解决了这个..下面的工作代码!谢谢大家! - &GT;

$key_flag = false;
$key_label = '<span class="hl_reference"><u>key references:</u></span>';

foreach($reference_keys as $value)
{
if (!empty($value)) {
    if (!$key_flag) {
        echo $key_label;
        **$key_flag = true;**
    }
    echo $value .'&nbsp;';
}
};

3 个答案:

答案 0 :(得分:1)

如果我读得正确,如果span数组中有值,则显示$reference_keys,然后循环显示数组中的值。

为此,您可以执行以下操作:

if (!empty($reference_keys) && count($reference_keys) > 0) {
    echo '<span class="hl_reference"><u>key references:</u></span>';
    foreach($reference_keys as $value)
    {
       echo $value .'&nbsp;';
    }
}

编辑如果$reference_keys数组中有空值,则count将返回大于0但不会显示任何键。如果是这种情况,则此代码将解决此问题:

$key_flag = false;
$key_label = '<span class="hl_reference"><u>key references:</u></span>';

foreach($reference_keys as $value)
{
    if (!empty($value)) {
        if (!$key_flag) {
            echo $key_label;
            $key_flag = true;
        }
        echo $value .'&nbsp;';
    }
}

答案 1 :(得分:0)

count功能可以帮助您:

if(count($value) >= 1 && !$key_label)

答案 2 :(得分:0)

您的代码似乎存在一些逻辑问题,首先,您在代码中覆盖了$key_label内容以及下面的代码,而您在一个似乎不是数组的变量中使用count()。尝试类似这样的代码:

$key_flag  = false;
$key_label = '<span class="hl_reference"><u>key references:</u></span>';

foreach( $reference_keys as $value )
{
    echo $value .'&nbsp;';
}

if( count( $reference_keys ) >= 1 && ! $key_label )
{
    $key_flag = true; 
    echo $key_label;
};

或者您可以使用更好的解决方案:

if( is_array($reference_keys) && count($reference_keys) > 0 )
{
    echo '<span class="hl_reference"><u>key references:</u></span>';

    foreach( $reference_keys as $value )
        echo $value .'&nbsp;';
}

编辑1

if( is_array($reference_keys) && count($reference_keys) > 0 )
{
    echo '<span class="hl_reference"><u>key references:</u></span>';

    foreach($reference_keys as $value)
        echo $value .'&nbsp;';
}