2013-06-24 38 views
1

我想知道變量是否可以在數組中使用。見下文($ userArray =陣列($ usersBought);使用變量作爲php數組

$user = "Darren"; 
    $usersBought = $row['usersBought']; 
    $userArray = array($usersBought); 
    if (in_array($user, $userArray)) { 
     $button = "yes"; 
    } 

如果這能正常工作,應文在數據庫中呢?我試過這個...

"Darren","Adam","Coral" 
Darren,Adam,Coral 
Darren Adam Coral 

這個數組在while循環中,並通過循環在頁面上顯示多個無序列表。這就是爲什麼我有$ usersBought = $ row ['usersBought'];有

+0

什麼是$行['usersBought']'? –

+0

從MySQL的結果... –

+0

你試過了,$ userArray = $ row ['usersBought']; ?? – Fallen

回答

3

爲你的數據庫是正確的規範化,應該結構,你是不是在數據庫中存儲的陣列,而是每個用戶在一個表中的一行這樣你的表。

但是,要回答您的問題,您需要使用explode()函數。

//$row['usersBought'] = "Darren,Adam,Coral"; <- Example 
$user = "Darren"; 
$usersBought = $row['usersBought']; 
$userArray = explode(",", $usersBought); 
if (in_array($user, $userArray)) { 
    $button = "yes"; 
} 

在上面的例子中,它假設用戶之間用逗號分隔,但您可以將第一個參數更改爲任何您想要的。

+0

Dude我愛你,謝謝:D –

3

如果你存儲你的數據是這樣的:Darren,Adam,Coral 正確的解決辦法是:

$user = "Darren"; 
$usersBought = explode(",",$row['usersBought']); //Just choose the right delimiter. 


if (in_array($user, $userArray)) { 
    //Ok proceed. 
} 

此外,您還可以使用功能preg_grep,可以讓你在不區分大小寫的方式進行檢查。

$in_array = preg_grep("/{$user}/i" , $usersBought); 
0

假設$行[「usersBought」]本身是一個數組(我懷疑),那麼你正在尋找的函數被調用array_merge

和你的代碼看起來像:

$userArray = array_merge($usersBought); 
0

爲例如:數據庫測試,用戶表

ID|Name| 
1|Emilio| 
2|Darren| 

的連接後到DB你應該做這樣的事情:

$user = 'Darren'; 
$query = "SELECT Name FROM Users WHERE Name ='$user'"; 
$result = mysqli_query($query); 
$count = mysqli_num_rows($result); 
if($count >= 1){ 
    $button = "yes"; 
} 
+0

你好像在這裏缺少代碼,什麼是'%s','mysqli_query()'需要參數等等。 –