【问题标题】:How to check for matching key value pairs如何检查匹配的键值对
【发布时间】:2015-05-31 23:18:45
【问题描述】:

我有一组带有键值对的数组:

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 1, 'yellow' => 7, 'cyan'   => 8);

如何检查两个数组是否包含匹配的键和值一起?我想设置一个条件,所以如果$array1$array2 有一对匹配的blue=>1 那么我想做点什么?

【问题讨论】:

  • 谢谢大家。我试图用 Laravel 回显一个查询。但我收到错误。我最好发布另一个问题吗?
  • 不,您应该编辑您的问题并添加您尝试过的相关代码并描述您遇到的问题。
  • 感谢 hek2mgl,但它太长了,老实说它更像 laravel
  • 那你需要把它分解成一个与 laravel 无关的可以理解的问题。这个问题简直就是质量差。在继续发布问题之前,请阅读(并理解)问题常见问题解答!
  • 这个问题让我相信了。我实际上之前发布了这个问题,但不幸的是我没有得到合适的答案。 stackoverflow.com/questions/30561481/…

标签: php arrays operators


【解决方案1】:

你可以使用array_intersect_assoc:

php > var_dump(count(array_intersect_assoc($array1,$array2)) > 0);
bool(true)

php > $array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
php > $array2 = array('green' => 5, 'blue' => 2, 'yellow' => 7, 'cyan'   => 8);
php > var_dump(count(array_intersect_assoc($array1,$array2)) > 0);
bool(false)

【讨论】:

    【解决方案2】:

    循环遍历$array1并检查$array2的值是否相同:

    foreach($array1 as $i=>$val){
        if($array2[$i]==$val)
            //do stuff
    }  
    

    【讨论】:

      【解决方案3】:
      foreach( $array as $key => $value ){
        if (array_key_exists($key, $array1)) {
          echo $array[$key] == $array1[$key];
        }
      }
      

      如果我在尝试访问散列中不存在的键时正确回忆为 php 错误,我认为您必须检查键是否存在。

      【讨论】:

        猜你喜欢
        • 2015-08-10
        • 1970-01-01
        • 2021-05-31
        • 1970-01-01
        • 1970-01-01
        • 2014-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多