我在php(codeigniter)代码中有2个数组,我想检查其中一个数组的值是否存在于第二个数组中。
以下是我的尝试:
$filters = $this->categoriesFiltersModel->get();
foreach($filters as $f=> $val) {
echo $val['filterid'] ."<br />";
}
$formValues = $this->input->post(NULL, TRUE);
foreach($formValues as $key => $value) {
echo " Key: " . $key . "</br>";
}
$search_array = array($f['filterid']);
if (array_key_exists($key, $search_array)) {
echo "use query 1";
} else {
echo "use query 2";
}
die();
第一个数组返回如下值:
1 2 3 4 ....
和第二个 FIELD1 域2 字段3
所以我期待在这里打印使用查询1,但是,无论我做什么,我总是使用查询2打印。任何人都可以指出我做错了什么?
问候,约翰
答案 0 :(得分:0)
使用此函数而不是array_key_exist()
function array_ikey_exists($key,$arr)
{
$e = 0; //$key = addslashes($key);
if(is_array($arr) && $arr !==array())
{
foreach($arr as $k => $v)
{
if(strtolower($k) == strtolower($key))
$e++;
}
if($e>0)
return true;
else
return false;
}
else
return false;
}
答案 1 :(得分:0)
我看到的问题是搜索阵列上没有设置数组,搜索数组中应该有正确的键。如果你只是像你那样做,那么数组的键从0开始。另一个问题可能是,如果$ key的值是'field1',它将不匹配任何原因然后需要是一个关联数组,被搜查。
$filters = $this->categoriesFiltersModel->get();
foreach($filters as $f=> $val) {
echo $val['filterid'] ."<br />";
}
$formValues = $this->input->post(NULL, TRUE);
foreach($formValues as $key => $value) {
echo " Key: " . $key . "</br>";
}
$search_array = array($key => $f['filterid']);
if (array_key_exists($key, $search_array)) {
echo "use query 1";
} else {
echo "use query 2";
}
die();
答案 2 :(得分:0)
您可以使用array_keys
和in_array
。尝试:
$formValues = $this->input->post(NULL, TRUE);
$keys = array_keys($formValues);
$result= array();
$filters = $this->categoriesFiltersModel->get();
foreach($filters as $f=> $val) {
if(in_array($val['filterid'],$keys)){
$result[] = $val['filterid'];
}
}
现在result
数组将保存匹配的元素。
请参阅演示here