【问题标题】:using array_intersect使用 array_intersect
【发布时间】:2012-07-23 19:30:34
【问题描述】:

我有 2 张桌子。 一个带有企业列表及其地址的 另一个带有邮政编码列表及其经度和纬度。 我有一个接受邮政编码和英里数来检查半径的表格。

所有半径的东西都来自我在网上找到的脚本。 我需要的是呼应半径内的企业条目。

到目前为止,我有 2 个查询。 一个获取数据库内的所有条目邮政编码 另一个获取我输入表格范围内的所有邮政编码

我正在使用 array_intersect 来查找匹配的。 我的问题是它只返回找到的第一个条目。 我确定我需要一个 while 循环来执行此操作,但我不知道该怎么做。

代码sn-p:

     $insideRadius = array_intersect($data, $zipArray);

$data 是业务表中的所有邮政编码。 $zip 数组是范围内的所有邮政编码。

【问题讨论】:

  • 我可能遗漏了一些东西,但是如果您只有邮政编码的坐标(而不是企业和地址),您将如何找出在 x 英里范围内的... /跨度>
  • long 和 lat 的表也有邮政编码。对不起,如果我没有这么说
  • 所以你基本上想在邮政编码上JOIN他们?
  • 效果很好,但它只给了我 1 个条目
  • 是的,我想我需要他们加入邮政编码...这里只有一条评论,它有效“SELECT * FROM entries WHERE zip in (".implode(",",$zipArray ) . ")";

标签: php mysql while-loop array-intersect


【解决方案1】:

您不能只选择邮政编码列在 $zipArray 中的企业吗?

"SELECT * FROM business WHERE zipcode IN (" . implode(",", $zipArray) . ")"

在 PHP 中你可以这样运行它:

$result = mysql_query("SELECT * FROM business WHERE zipcode IN (" . implode(",", $zipArray) . ")");
while ($row = mysql_fetch_assoc($result))
{
    echo $row["name"] . "<br />";
    echo $row["zipcode"] . "<br />";
} 

【讨论】:

  • 是的,但它只给了我 1 个条目,我的表中有 2 个条目。 2 个彼此相距 5 英里以内的邮政编码,并且只显示查询匹配的第一个邮政编码。
  • 如果你执行这个查询,你必须循环遍历结果。每次迭代只能获取一行。你能试试这个查询吗,如果它不起作用,发布你的 PHP 代码来执行查询并循环遍历结果。
  • 尝试从一些 MySQL 客户端(如 SELECT * FROM business WHERE zipcode IN (100,200,300))手动运行它,以检查问题是在查询中还是在您的 php 代码中。
  • @DevinPrejean:你的意思是 $zipArray?您可以将print_r($zipArray) 的输出添加到您的问题中吗?
  • 我手动运行它,它仍然只拉第一个。我确定我确实需要一个while循环。我需要弄清楚我不想听起来像个菜鸟,但如果我有一段时间没做的话,我会很快忘记事情。我已经写了一年左右的php代码了。
猜你喜欢
  • 2022-01-03
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 2017-04-21
  • 2011-07-31
  • 2016-02-17
相关资源
最近更新 更多