- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了与 array_intersect 和 array_unique 的使用相关的不规则现象的问题。
请注意,这是一个旧环境,mysqli无法使用。
我的脚本的第一步中有四个 MySQL 查询。它们具有相同的以下结构:
$aid_1 = mysql_query("SELECT aid FROM xy WHERE (bid = '20' OR bid = '34') AND baseData BETWEEN $select_1 AND $select_2");
$select_1
等等源自 HTML 选择列表(总共八个,一次两个作为一个范围的“from”和“to”)。这个程序运行良好,我检查了结果如下:
while($row_aid_1 = mysql_fetch_array(aid_1))
{
echo '</br> — ' . $row_aid_1['aid'] . '</br>';
}
这是发生违规行为的第二步。我想获取在第一步的所有四个查询的结果中找到的值。我意识到这一点如下:
while(($row_aid_1 = mysql_fetch_array($aid_1)) && ($row_aid_2 = mysql_fetch_array($aid_2)) && ($row_aid_3 = mysql_fetch_array($aid_3)) && ($row_aid_4 = mysql_fetch_array($aid_4)))
{
$aid_array = array($row_aid_1, $row_aid_2, $row_aid_3, $row_aid_4);
$aid_ai = call_user_func_array('array_intersect', $aid_array);
$aid_u = array_unique($aid_ai);
print_r('</br> — ' . $aid_u[0] . '</br>');
var_dump($aid_u);
}
再次,print_r
和var_dump
用于检查结果。关于array_intersect
只要使用上述选择列表中的最低或最高值,这些就可以了。如果使用除最低/最高之外的其他值,则该功能仅有时有效。有时,日志会在倒数第二行 ( print_r('</br> — ' . $aid_u[0] . '</br>');
) 中显示“PHP 通知:未定义索引”或“PHP 通知:未定义偏移量:0”。我无法弄清楚错误到底是什么,因为如上所述,它只是有时会发生。很明显,错误必须出现在第二步中的某个地方,因为第一个步骤在所有情况下都有效(如上所述进行交叉检查)并且索引/偏移量是在第一步中定义的。
我在 array_unique 之前尝试了使用 array_values 的中间步骤,但这不会改变任何东西。
array_unique
根本不起作用。结果几乎总是打印两次。
如果有人能够理解并解释为什么索引或偏移量有时未定义以及为什么 array_unique 不起作用,我将非常感激。
最佳答案
您只是将每一行相交,而不是将所有结果作为一个组相交。仅当所有查询以相同顺序返回相同结果时,这才有效。
相反,对于每个查询,将其所有结果组成一个数组,然后将它们全部相交。
$aid1_results = array();
while ($row = mysql_fetch_assoc($aid_1)) {
$aid1_results[] = $row['aid'];
}
$aid2_results = array();
while ($row = mysql_fetch_assoc($aid_2)) {
$aid2_results[] = $row['aid'];
}
...
$aid_ai = array_intersect($aid1_results, $aid2_results, $aid3_results, $aid4_results);
您还可以使用 SQL 中的 JOIN
来完成此操作:
SELECT t1.aid
FROM (SELECT aid FROM ... WHERE ...) AS t1
JOIN (SELECT aid FROM ... WHERE ...) AS t2 ON t1.aid = t2.aid
JOIN (SELECT aid FROM ... WHERE ...) AS t3 ON t1.aid = t3.aid
JOIN (SELECT aid FROM ... WHERE ...) AS t4 ON t1.aid = t4.aid
关于php - array_intersect 和 array_unique 的不规则之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30791283/
我有一个数组数组,当脚本运行时可能有不同的元素计数。 $strict = [ [0] => ['one', 'two', 'three', 'four'], [1] => ['one'
我有 2 个表。一个包含企业及其地址的列表另一个带有邮政编码列表及其经度和纬度。我有一个接受邮政编码和英里数来检查半径的表格。 所有半径的东西都来 self 在网上找到的脚本。我需要的是回应半径内的企
我正在创建一个分面搜索,我正在尝试使用 array_intersect 来比较数组并找到匹配的输入。 问题是我随时都会有可变数量的数组,具体取决于用户选择的过滤器: $array_1, $array_
参数是这样的: function foo(arr1, arr2, arr3, arr4 ...) 并且该函数应返回 arr2、arr3、arr4 中不存在于 arr1 中的所有元素的数组。 有内置函数
考虑下面的脚本。只有三个值的两个数组。当我使用 array_intersect() 比较这两个数组时。结果很快。 我的问题是 array_intersect() 的效率如何。我们是否比较两个
如何在不使用 multiple isset(...) 的情况下检查数组中是否设置了键 我想到了这样的事情: $arr1 = [ "keyA" => 1, "keyB" => 2, "keyC" =>
我正在尝试在拥有资源(人员)的应用程序中制作高级搜索过滤器。我在 1 个多维数组中得到了所有结果。该应用程序的用户可以搜索人员的职位、技能、工作领域和国家/地区。 我已经完成了查找符合用户给定条件的人
是否有类似于“array_intersect”的函数,但它处于不区分大小写且忽略波浪号的模式? array_intersect PHP 函数将数组元素与 === 进行比较,因此我没有得到预期的结果。
是否有内置函数可以获取数组 1 中不存在于数组 2 中的所有成员? 我知道如何以编程方式做到这一点,只是想知道是否有一个内置函数可以做到这一点。所以拜托,没有代码示例。 最佳答案 这听起来像是 arr
我有两个看起来像这样的数组: Array ( [0] => Array ( [name] => STRING [value] =
这个问题在这里已经有了答案: Filter an array with another array php [duplicate] (2 个答案) 关闭 2 个月前。 我有两个数组: $arr1 =
我在网上找到了这个片段,它使用整数在 java 中创建了一个类似 array_intersect 的函数。 示例: int[] intersect(int[] arr1, int[]
假设这是我的 sql 数据库列值: Result - Reference 1 A1 2 A2 3
我有两个数组,我需要比较它们并从 array1 返回匹配值。请引用下面我的代码, $array1 = array("a" => "Green", "Red", "Blue"); $array2 = a
我正在寻找函数 array_intersect 的对立面,基本上是一个返回不存在于每个中的元素的函数提供的数组。 例子: $a1 = array(1, 2, 3); $a2 = array(2, 3,
我正在为我的目录设计一个包引擎。在这里,您可以将一定数量的产品添加到套餐中并享受折扣。当您订购产品时,脚本必须检测哪些包裹交易适用于您的订单。 这是我的代码: // packages $package
这是我第一次在这里发帖,虽然我在阅读这里的帖子时得到了很多很棒的提示和技巧。 这是我的目标: 我有 2 个比较相似的表格。对于每个表的每一行,我将我想要的字段拉到一个数组中。 我基本上想从一个表中回显
$master = ['111' => 'foo', '124' => 'bar', '133' => 'baz']; $check = ['111' => 14, '133' => 23 ]'; 我
如果键和值具有相同的内容,使用键相交还是使用值相交更有效例如: Array ( [743] => 743 [744] => 744 [745] => 745 [746]
我遇到了与 array_intersect 和 array_unique 的使用相关的不规则现象的问题。 请注意,这是一个旧环境,mysqli无法使用。 我的脚本的第一步中有四个 MySQL 查询。它
我是一名优秀的程序员,十分优秀!