每当我试图根据SQL数据库中的数据显示数组的内容时,输出总是以“Array”为前缀。我是否使用echo,print_r(),var_dump()或其他方式并不重要。代码如下。任何想法都很受欢迎!
$prefix1 = '';
$tasks = array($product, $service, $order, $social, $competition, $dataOther);
foreach ($tasks as $task) {
if ($task == '') {
unset($task);
} else {
$tasks .= $prefix1 . '' . $task . '';
$prefix1 = ', ';
}
}
echo $tasks;
输出 - “数组”后跟$ tasks
的内容 修改:我无法使用implode(', ', $tasks)
,因为每个输入(即$product
,$service
等)都可能为空,因此结果为“,,”在某些地方。
希望更清楚。
答案 0 :(得分:4)
您在循环中覆盖数组,在向其添加字符串时将其强制转换为字符串。您应该为正在构建的字符串使用不同的名称。
虽然你真的不需要循环,但你可以用以下代码替换你的代码:
$tasks = array($product, $service, $order, $social, $competition, $dataOther);
echo implode(', ', $tasks);
修改:根据您的修改 - 变量可以为空 - 您可以在没有回调函数/第二个参数的implode
:array_filter
之前过滤空值删除空值:
$tasks = array($product, $service, $order, $social, $competition, $dataOther);
echo implode(', ', array_filter($tasks));
请注意,这也会过滤0
之类的字符串,因此,如果这不是您想要的,则必须添加符合您要求的回调函数。