内爆数组值

时间:2015-07-30 13:44:41

标签: php arrays implode

我有一个多选属性颜色。

$color = $_product->getAttributeText('color');
$output = implode(',', $color);
echo $output;

$ color给出一个数组值。如果颜色属性存在多个值,例如1.蓝色和2.绿色,则打印蓝色,绿色但是当$ color(例如蓝色)只有一个属性时,它不会打印任何东西。

这是内爆的正常行为吗?数组中必须存在多个值?如果没有,那么我如何打印这些单一的现值?

3 个答案:

答案 0 :(得分:5)

您可以使用is_array()

$color = $_product->getAttributeText('color');

if (is_array($color)) {
  $output = implode(',', $color);
} else {
  $output = $color;
}

echo $output;

答案 1 :(得分:1)

我将在这里走出困境,但我猜想如果有一个值返回,它就是一个字符串;字符串是implode的无效输入,会引发PHP Warning

在这种情况下,implode会返回null值,这可以解释为什么您没有看到任何打印的内容。

因此,请确保在所有情况下都将数组传递给implode

修改

如果在开发环境中看不到调试信息,则应考虑设置error_reporting()以帮助您调试代码。一种简单的方法是将以下行添加到脚本的顶部:

<?php

error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);

// your code...

请注意,出于安全原因,您不应在生产环境中启用这些设置。

答案 2 :(得分:0)

Hello Dear,


    $color = 'blue';
    $output = implode(',', $color);
    echo $output;

It will give you a warning.

Warning: Invalid arguments passed.

But it works fine with array

    $color = array('blue');
    $output = implode(',', $color);
    echo $output;

Check the return value stored in `$color` and then go ahead.
Thanks.