2017-02-10 26 views
0

每当我试图根据来自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; 

输出 - “阵”后面的$内容的任务

编辑:我不能使用implode(', ', $tasks)因为每个输入端(即$product$service等)可能是空白,因此,结果将是“,,”在地方。

希望更清楚。

+1

你想做什么?? $ tasks。= $ prefix1。 ''。 $任务。 '';' –

+1

您正在覆盖循环中的数组,并在将字符串添加到字符串时将其转换为字符串。你应该使用不同的名字。 – jeroen

+0

'$ tasks'是一个数组,或者至少在你运行这个代码之前。你不能'echo'一个数组 – RiggsFolly

回答

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因此,如果这不是你想要的,你将不得不添加一个符合你的要求的回调函数。