2017-02-10 30 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因此,如果這不是你想要的,你將不得不添加一個符合你的要求的回調函數。