使用 array_intersect

Posted

技术标签:

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

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

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

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

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

代码sn-p:

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

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

【问题讨论】:

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

以上是关于使用 array_intersect的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)