我有一个多选属性颜色。
$color = $_product->getAttributeText('color');
$output = implode(',', $color);
echo $output;
$color提供了一个数组值。如果颜色属性有多个值,比如1. 蓝色和2. 绿色,它会输出蓝色,绿色,但当$color只有一个属性(比如蓝色),它就不会输出任何内容。
这是implode的正常行为吗?必须在数组中存在多个值吗?如果没有,我该如何打印出那些单个存在的值呢?
is_array()
函数。$color = $_product->getAttributeText('color');
if (is_array($color)) {
$output = implode(',', $color);
} else {
$output = $color;
}
echo $output;
implode
来说是无效的输入,会引发PHP Warning
。在这种情况下,implode
将返回一个null
值,这可能解释了为什么你什么也没看到输出。因此,请确保在所有情况下都将数组传递给implode
。
编辑
如果在你的开发环境中看不到调试信息,那么你应该考虑设置error_reporting()
以帮助你调试代码。一种简单的方法是在你的脚本顶部添加以下行:<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
// your code...
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.
implode()
的正常行为。当您只收到一个值时,print_r($color);
的输出是什么? - Rizier123