2013-06-24 69 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()'需要参数等等。 –