将数组值合并为字符串

3

我有一个多选属性颜色。

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

$color提供了一个数组值。如果颜色属性有多个值,比如1. 蓝色和2. 绿色,它会输出蓝色,绿色,但当$color只有一个属性(比如蓝色),它就不会输出任何内容。

这是implode的正常行为吗?必须在数组中存在多个值吗?如果没有,我该如何打印出那些单个存在的值呢?


7
不,这不是 implode() 的正常行为。当您只收到一个值时,print_r($color); 的输出是什么? - Rizier123
3个回答

5
你可以使用is_array()函数。
$color = $_product->getAttributeText('color');

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

echo $output;

1
我要冒昧地猜测,如果只有一个值被返回,那么它就是一个字符串;字符串对于implode来说是无效的输入,会引发PHP Warning。在这种情况下,implode将返回一个null值,这可能解释了为什么你什么也没看到输出。因此,请确保在所有情况下都将数组传递给implode编辑 如果在你的开发环境中看不到调试信息,那么你应该考虑设置error_reporting()以帮助你调试代码。一种简单的方法是在你的脚本顶部添加以下行:
<?php

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

// your code...

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

1
是的,返回的值是一个字符串。这很有道理 :) - amitshree

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.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接