【问题标题】:php, how to compare the 2 arrays from different queries?php,如何比较来自不同查询的 2 个数组?
【发布时间】:2011-10-30 18:44:41
【问题描述】:

我有 2 个查询,我通过执行 whyle 循环来取回一些数据。

如果我做print_r($final_key);我从第一个查询中得到:

hey1
hey2
hey3

从第二个开始,如果我这样做 print_r($final_key2); 我得到:

hey1 test
hey2 test1
hey3

我要做的是比较两个数组并检查匹配的单词 我不能直接从数据库中做到这一点

有什么想法吗?

谢谢

编辑: 这是我的查询 1:

while ($keywords = mysql_fetch_array($keys1, MYSQL_ASSOC)){
    foreach ($keywords as $key) {
        $plus = '+';
        $pos = strripos($key, $plus);
            if ($pos === false) { } else { 
                $clean_plus = preg_replace("/[\+]/", '', $key);
                $final_key = str_replace("'", "", $clean_plus);
                print_r($final_key);
                echo '<br>';
            }


    }
} 

第二个:

 <?php
 while ($keywords = mysql_fetch_array($keys)){
if($keywords['kword'] != ''){
    echo $keywords['kword'];
 } } ?>

我正在尝试匹配 $final_key$keywords['kword'];

【问题讨论】:

  • 你能给我们一个这两个数组的样本吗?即:array("one"=&gt;1, "two", "three")
  • 所以你想要一个返回 'hey3' 的函数,因为这是两个数组中唯一完全相同的词?
  • 真的不能只做数据库连接吗?
  • 请查看我的编辑。加入是没有问题的

标签: php mysql pattern-matching


【解决方案1】:

循环一个数组,并在每次迭代中循环另一个数组。

<?php
foreach($array as $item){
    foreach($array2 as $item2){
        if($item == $item2){
            $array3[] = $item;
        }
    }
}
?>

这将创建一个匹配数组,然后您可以随意使用它。

【讨论】:

  • 看起来 root45 有解决方案...哎呀。
【解决方案2】:

使用 array_intersect 返回一个包含两个数组中的值的数组。

如果您希望密钥匹配,请使用array_intersect_assoc

【讨论】:

  • 我得到了arning:array_diff() [function.array-diff]:参数#2 不是数组
  • 你需要更清楚你的变量类型是什么。你从说你有两个数组开始这个问题。在您的编辑结束时,您似乎正在比较两个字符串。是哪个?
  • 对不起,我猜它们是字符串
  • 如果它们都是字符串,那么为什么不标准比较==?如果一个是数组,另一个是字符串,则可以使用array_search。如果您要比较由空格(或其他分隔符)分隔的两个字符串中的子字符串,您可以使用 explode 将每个子字符串作为数组元素获取。然后使用array_intersect。如果这是您想要做的,您应该编辑您的问题,因为它现在看起来肯定不是那样的。
【解决方案3】:

使用array_intersect:

array_intersect($array1, $array2, ...);

来自array_intersect 文档:

array_intersect() 返回一个数组,其中包含所有参数中存在的 array1 的所有值。请注意,密钥会被保留。

【讨论】:

  • 我得到了arning:array_diff() [function.array-diff]:参数#2 不是数组
  • array_intersect 适用于数组;如果您想查看数组中是否存在字符串,也许array_search 会是一个更好的函数,但如果是这种情况,您的问题不清楚您要比较的是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
相关资源
最近更新 更多