在Array中搜索MYSQL输出的值

时间:2009-05-05 02:54:32

标签: php mysql arrays string

以下代码似乎无法正常工作或在阵列上找到任何内容。我正在使用“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";
  }

4 个答案:

答案 0 :(得分:2)

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

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

要使用in_array,你需要做类似于in_array("test", $resultarray[0])

的事情

答案 1 :(得分:0)

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()每个第二维的操作。

如果您想了解更多细节,请与我们联系。

答案 2 :(得分:0)

$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";
  }
}

答案 3 :(得分:0)

我相信你遇到的问题是它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";
 }