从数组中获取数据的问题

时间:2017-02-10 12:32:48

标签: php arrays

每当我试图根据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等)都可能为空,因此结果为“,,”在某些地方。

希望更清楚。

1 个答案:

答案 0 :(得分:4)

您在循环中覆盖数组,在向其添加字符串时将其强制转换为字符串。您应该为正在构建的字符串使用不同的名称。

虽然你真的不需要循环,但你可以用以下代码替换你的代码:

$tasks = array($product, $service, $order, $social, $competition, $dataOther);
echo implode(', ', $tasks);

修改:根据您的修改 - 变量可以为空 - 您可以在没有回调函数/第二个参数的implodearray_filter之前过滤空值删除空值:

$tasks = array($product, $service, $order, $social, $competition, $dataOther);
echo implode(', ', array_filter($tasks));

请注意,这也会过滤0之类的字符串,因此,如果这不是您想要的,则必须添加符合您要求的回调函数。