PHP Array foreach仅在找到多于1个值时输出

时间:2014-03-11 08:54:52

标签: php arrays loops foreach

我需要遍历一个可以有一个或多个值的数组(在这种情况下是一些属性)。我的问题是,只有在找到多个值时才会输出内容。如果数组中只有一个值,则根本不输出任何值。

我想输出找到的唯一值,或者更多(如果有的话)。我尝试插入break,但之后它只会停在找到的第一个值,停止查找其他值...我该如何解决这个问题?

<?php 
    foreach ($_product->getAttributeText('attribute') as $attribute): 
        echo $attribute.' ';
    endforeach ;
?>

3 个答案:

答案 0 :(得分:2)

@anurupr在评论中提到的可能是正在发生的事情。你的警告被抑制了吗?

尝试以下方法:

<?php
$mAttributeText = $_product->getAttributeText('attribute');
if (is_array($mAttributeText)) {
    foreach ($mAttributeText as $sAttribute) {
        echo $sAttribute . ' ';
    }
} else {
    echo $mAttributeText;
}

答案 1 :(得分:1)

如果只找到一个属性,则getAttributeText方法可能无法返回数组(只有一个元素的数组上的foreach应该正常工作)

此外,这不会回答你的问题,但可能会帮助你:你看看函数implode吗?

echo implode(" ", $_product->getAttributeText('attribute'));

答案 2 :(得分:1)

确保

$_product->getAttributeText('attribute')

返回一个数组。

可能有奇怪的语法?看看这个例子并尝试这样: http://www.w3schools.com/php/showphp.asp?filename=demo_loop_foreach