2014-02-18 77 views
0
$universe = $_SESSION["company"]; 
$sql = "SELECT manufacturer FROM spaceships WHERE `$universe` = 1"; 
$companyListQuery = $db->prepare($sql); 
$companyListQuery->execute(); 
$companyList = $companyListQuery->fetchAll(); 
$companyList = array_unique($companyList); 
foreach($companyList as $row){ 
$selected = $row["manufacturer"]; 
echo '<tr>'; 
echo '<td class="table">'.$row["manufacturer"].'</td>'; 
} 

所以這是給我一個通知說有一個數組來轉換字符串。但據我所知fetchAll()返回一個數組,所以我不知道它爲什麼這麼說?幫助表示讚賞。array_unique foreach循環 - 注意:數組到字符串轉換

+0

哪條線實際上是從哪裏來的?你至少有兩個地方可以在字符串上下文中使用數組。 –

+0

第40行,所以$ companyList = array_unique($ companyList); – user3271847

+0

錯誤是正確的。 array_unique對每個元素進行字符串比較,所以它需要一個字符串數組(或者可以轉換爲字符串的東西),但是您要給它一個數組數組。它試圖將數組轉換爲字符串 – rwilson04

回答

1

路易斯Masuelli的回答是這個問題是正確的,但作爲一個遵循,如果你想唯一行使用DISTINCT:如果

$sql = "SELECT DISTINCT manufacturer FROM spaceships WHERE `$universe` = 1"; 

還是將來做到這一點在PHP你沒有使用數據庫:

$companyList = array_map('unserialize', array_unique(array_map('serialize', $companyList))); 
+0

非常感謝。我並沒有意識到「SELF DISTINCT」,我很高興知道它現在的存在。再次感謝。 – user3271847

+0

它不是自我。這是SEELCT –

+0

哎呀,錯字..對不起,關於 – user3271847

4

array_unique比較(字符串)$ a ==(字符串)$ b。你的數組是數組的數組,所以每個元素都被轉換爲數組。有通知(array_unique對標量有好處)

官方文檔:注意:array_unique()不適用於多維數組。

http://php.net/array_unique這裏

相關問題