我有一个多选属性颜色。
$color = $_product->getAttributeText('color');
$output = implode(',', $color);
echo $output;
$ color给出一个数组值。如果颜色属性存在多个值,例如1.蓝色和2.绿色,则打印蓝色,绿色但是当$ color(例如蓝色)只有一个属性时,它不会打印任何东西。
这是内爆的正常行为吗?数组中必须存在多个值?如果没有,那么我如何打印这些单一的现值?
答案 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.