- 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/
我有一些代码正在运行,并且运行良好,但是当数组中的值为“morphsuite”时,相关站点已开始生成重复项 代码: if(isset($sort2)) { $sort2 = array_un
在下面的代码中: $sth = $dbh->query('SELECT DISTINCT title,courseId,location from training'); $sth->setFetc
所以我得到了这个数组: Array( [0] => Array( [date_add] => 2016 - 12 - 01[0] => 2016 - 12 - 01 )
我有以下自动完成框的代码,我添加了一个图像以澄清选择,但想确保返回的 title 是唯一的,但是,当我到达使数组唯一,我添加了其他代码,使其在其他区域不唯一。有办法解决这个问题吗? $query =
我这里有这段代码: $bestffffs = $db->query("SELECT * FROM chapter WHERE ch_trans = '".$wordss."' ORDER BY ch_
我有以下代码,但是,array unique 根本不起作用,我不知道为什么? 查询中的 group by 或 distinct 已被使用,但是,数据为每个主题提取了多个记录,然后我将其删除并实际上使它
这个问题在这里已经有了答案: how to select unique keywords from a comma separated tags (3 个答案) 关闭 6 个月前。 这是我的表tra
对象有没有类似array_unique的方法?我有一堆数组,其中包含我合并的“角色”对象,然后我想取出重复项:) 最佳答案 array_unique使用 SORT_REGULAR 处理一组对象: cl
我正在尝试学习如何使用 array_unique,所以我制作了一些示例代码,但没有得到我预期的结果。 $array[0] = 1; $array[1] = 5; $array[2] = 2; $arr
对象有没有类似array_unique的方法?我有一堆数组,其中包含我合并的“角色”对象,然后我想取出重复项:) 最佳答案 array_unique使用 SORT_REGULAR 处理一组对象: cl
我正在检查 array_unique 函数。手册说它也会对值进行排序。但我看不到它正在对值进行排序。请查看我的示例代码。 $input = array("a" => "green", 3=>"red"
PHP 中是否有一个数组函数以某种方式执行 array_merge,比较值,忽略键?我认为 array_unique(array_merge($a, $b)) 有效,但我相信一定有更好的方法来做到这一
我正在构建一个扩展 include_path 的自动加载器。它需要一个数组,追加 explode() 包含路径,删除所有对当前目录的引用,在数组的开头添加一个当前目录,最后 join() 将整个内容组
如果我有一个使用整数作为索引的数组。 (1、2、3 等)。当我在其上使用 array_unique 函数时,新数组值是否会使用从 1 开始的新索引存储?或者这个新数组是否使用与前一个数组相同的索引?
如果将 array_unique 用于具有对象元素的数组,在项目中使用 DateTime 再次遇到复制问题,(但仅 DateTime 有问题),请参见代码: class simpleClass {
为了获得唯一值,我使用了唯一值。下面是我正在使用的代码 array_unique($results_external); aasort($results_external,"created_on");
这个问题在这里已经有了答案: 关闭9年前。 Possible Duplicate: Re-index numeric array keys 我有一个数组如下 Array ( [0] => 15
对于数组中的数组,我需要一个像 array_unique 这样的函数。 案例 - 应该相等,但输出“不相等”: 应该如何更改代码以使输出“相等”? 最佳答案 您应该修改对 array_unique
我有一个数组 Array( [0] => Array ( [0] => 33 [user_id] => 33 [1] => 3
这个问题在这里已经有了答案: 关闭9年前。 Possible Duplicate: Re-index numeric array keys 我有一个数组如下 Array ( [0] => 15
我是一名优秀的程序员,十分优秀!