【问题标题】:Search inside Array for Value on a MYSQL Output在数组中搜索 MYSQL 输出的值
【发布时间】:2010-10-23 19:30:59
【问题描述】:

下面的代码似乎不起作用或在数组上找不到任何东西。我正在使用“in_array”来搜索堆栈中的针。我还尝试用逗号分隔的内容爆炸并且不起作用。有什么建议?我也试过“array_search”。

$q4 = "SELECT domain_name,slots_config.bid FROM slots_pid,slots_config,slots_sites 
WHERE slots_config.bid=slots_pid.bid && slots_sites.aid=slots_pid.aid";
$result4 = mysql_query($q4);

while($row = mysql_fetch_array($result4))
{
    $resultarray[] = $row;
}


if (in_array("test",$resultarray))
  {
  echo "Match found";
  }
else
  {
  echo "Match not found";
  }

【问题讨论】:

    标签: php mysql arrays string


    【解决方案1】:

    看起来你这里有一个“数组数组”。也就是说,在您的 while() 循环中, $row 是一个数组,它对应于您的 mysql 查询中的数据。所以 $resultarray 的每个元素实际上都包含一个数组,而不是一个字符串。

    尝试这样做:print_r($resultarray)。这将显示 $resultarray 的整个结构,并且您可以看到如何创建一个数组数组。

    要使用 in_array,您需要执行类似于 in_array("test", $resultarray[0]) 的操作

    【讨论】:

    • print_r, var_dump 是你的朋友。了解您的数据比一一尝试所有不同的 php 函数要快。
    【解决方案2】:

    in_array() 不适用于这种数组,因为它是多维的。

    您的数组如下所示:

    $resultarray[0]['domain_name'] = 'first row domain name';
    $resultarray[0]['bid'] = 'first row bid';
    $resultarray[1]['domain_name'] = 'second row domain name';
    ...
    

    您不能使用 in_array() 在其中进行搜索,因此您必须使用另一种方法来进行搜索,例如遍历数组,或者以不同的方式构建 $resultarray

    同样,array_search() 不适用于多维数组,因此您可以执行类似循环第一个维度和 array_search()-ing 每个第二维度的操作。

    如果您需要更多详细信息,请告诉我。

    【讨论】:

    【解决方案3】:
    $q4 = "SELECT domain_name,slots_config.bid FROM slots_pid,slots_config,slots_sites 
    WHERE slots_config.bid=slots_pid.bid && slots_sites.aid=slots_pid.aid";
    $result4 = mysql_query($q4);
    
    while($row = mysql_fetch_array($result4))
    {
      if (in_array("test",$row))
      {
         echo "Match found";
      }
      else
      {
         echo "Match not found";
      }
    }
    

    【讨论】:

      【解决方案4】:

      我相信您遇到的问题是它 in_array 仅搜索二维数组的第一个维度。我也不明白你为什么在搜索之前将整个结果加载到一个数组中(但也许这在你程序的其他地方很有用)。

      试试:

       $found = false;
       while($row = mysql_fetch_array($result4))
       {
          if (in_array($needle, $row){
            print "here it is";
            $found = true;
            break;
       }
      
       if (!$found) {
            print "not found";
       }
      

      【讨论】:

        猜你喜欢
        • 2016-12-02
        • 1970-01-01
        • 2015-05-30
        • 2015-05-27
        • 1970-01-01
        • 2023-02-24
        • 2014-04-30
        • 2019-09-12
        相关资源
        最近更新 更多