Php 尝试将字段数据放入if inarray()检查

Php 尝试将字段数据放入if inarray()检查,php,sql-server,arrays,Php,Sql Server,Arrays,只是想知道是否有人能帮我解决这个问题。。。 我希望能够检查某个ID(例如用户已登录)这些用户的ID是否将从表中提取,然后馈送到数组中,然后检查它是否在其中 但是,当我提取数据时,if inarray()不再像我直接在代码中键入数据而不是提取数据那样工作 我想拉通过批准的ID,使他们可以访问一个特定的链接本质上 任何帮助都将不胜感激!谢谢 <?php mssql_select_db("$ins", $con); $result = mssql_query("SELECT ID FROM E

只是想知道是否有人能帮我解决这个问题。。。 我希望能够检查某个ID(例如用户已登录)这些用户的ID是否将从表中提取,然后馈送到数组中,然后检查它是否在其中

但是,当我提取数据时,if inarray()不再像我直接在代码中键入数据而不是提取数据那样工作

我想拉通过批准的ID,使他们可以访问一个特定的链接本质上

任何帮助都将不胜感激!谢谢

<?php
mssql_select_db("$ins", $con);

$result = mssql_query("SELECT ID FROM Event WHERE  EventPublic LIKE 'Yes' AND EventDate >=       GETDATE() -1   ORDER BY EventDate ASC    ");


while($row = mssql_fetch_array($result))
{



$test = "". $row['ID'] .",";

}


$tests = explode(',', $test);


if (in_array("2, 48", $tests)) {
   echo "WOO";
 }
 else
{
echo "BOO";
 }


mssql_close($con);
?>

数组中的
应为实际数组

in_array(array('2', '48'), $tests)
此外,最好是

$tests = array();
在while循环之前,将循环中的代码更改为read

$tests[] = $row['ID'];

然后,您可以取消“$tests=explode(…”行)。

您的in_数组测试存在问题,因为您正在比较数组和下一行中的字符串:

if (in_array("2, 48", $tests))
上面的一行检查数组中是否存在字符串“2,48”。但是数组将有2作为一个元素,48作为一个单独的元素。要解决此问题,您可以使用以下方法分别搜索每个元素:

if(in_array('2',$tests) || in_array('48',$tests))

哎哟,我意识到这是错误的。@Brett下面的答案很有效。如果你有一个大数组,你可以在数组中添加“$tests[$row['id']]=true”,然后你可以使用“isset($tests[2])| | isset($tests[4])。这在大数组上会快得多(in_数组相当慢)