我有一个包含多个数组的$_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']
变量中,并且它的值显然完全相同。有没有办法在不使用循环的情况下做到这一点?如果没有,那么如何使用循环呢?
答案 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)