【问题标题】:Trying to get field data to fit into if inarray() check试图让字段数据适合 inarray() 检查
【发布时间】:2012-10-11 23:55:08
【问题描述】:

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

但是,当我拉取数据时,如果 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);
?>

【问题讨论】:

    标签: php sql-server arrays


    【解决方案1】:

    in 数组应该是一个实际的数组

    in_array(array('2', '48'), $tests)
    

    还有,最好放

    $tests = array();
    

    在while循环之前,然后将循环内的代码改为read

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

    然后你可以取消'$tests = explode(...' 行。

    【讨论】:

    • 哎呀,我意识到这是错误的。 @Brett 在下面的回答有效。如果你有一个大数组,你可以添加到数组中做 '$tests[$row['id']] = true',然后你可以使用 'isset($tests[2]) || isset($tests[4])'。这在大型数组上会明显更快(in_array 非常慢)
    【解决方案2】:

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

    if (in_array("2, 48", $tests))
    

    以上行检查字符串“2, 48”是否存在于数组中。但是该数组将 2 作为一个元素,将 48 作为一个单独的元素。要解决此问题,您可以使用以下内容单独搜索每个元素:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      相关资源
      最近更新 更多