检查数组是否在另一个数组中并且它们是相同的

时间:2018-06-12 08:25:16

标签: php

我有一个包含多个数组的$_SESSION['basket']。我想检查这个$_SESSION['basket']变量是否包含特定数组,并且它们具有相同的值。

例如,我想检查一个数组的$my_array是否与$_SESSION['basket'][i]相同。

$_SESSION['basket']将包含多个数组,如下所示:

$_SESSION['basket'] = array(
  [0] => array(
    "key1" => "value1",
    "key2" => "value2"
  );
  [1] => array(
    "key3" => "value3",
    "key4" => "value4"
  );
  [2] => array(
    "key5" => "value5",
    "key6" => "value6"
  );
);

$my_array将包含:

array(
  "key3" => "value3",
  "key4" => "value4"
);

所以我想确保$my_array变量包含在$_SESSION['basket']变量中,并且它的值显然完全相同。有没有办法在不使用循环的情况下做到这一点?如果没有,那么如何使用循环呢?

2 个答案:

答案 0 :(得分:0)

好吧,你必须使用一个循环。即使您使用任何PHP API,它仍会在引擎盖下循环。

<?php 

function checkIfExists($haystack,$needle){
  foreach($haystack as $each_needle){
      if(isEqual($each_needle,$needle)) return true;
  }

  return false;
}

function isEqual($test,$original){
  foreach($original as $each_key => $each_value){
    if(!isset($test[$each_key]) || $test[$each_key] !== $each_value) return false;
  }

  return count($test) === count($original);
}


$_SESSION['basket'] = array(
  array(
    "key1" => "value1",
    "key2" => "value2"
  ),
  array(
    "key3" => "value3",
    "key4" => "value4"
  ),
  array(
    "key5" => "value5",
    "key6" => "value6"
  )
);

$my_array = array(
  "key3" => "value3",
  "key4" => "value4"
);

var_dump(checkIfExists($_SESSION['basket'],$my_array));

<强>输出

bool(true)

答案 1 :(得分:0)

简单地:

<?php

$basket =
array(
  array(
    "key1" => "value1",
    "key2" => "value2"
  ),
  array(
    "key3" => "value3",
    "key4" => "value4"
  ),
  array(
    "key5" => "value5",
    "key6" => "value6"
  )
);

$needle  = array(
  "key3" => "value3",
  "key4" => "value4"
);

var_dump(in_array($needle, $basket));

输出:

bool(true)