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