我需要从一个填充2个数组,在白名单上过滤。 这是代码:
foreach($ct_list as $key => $value ){
if ( in_array($key, $ct_load) ){
$ct_options[$key] = $value;
if ( !is_null ($ct_visible) && in_array($key, $ct_visible) ){
$ct_default[] = $value;
}
}
}
第二个数组($ ct_default)没问题。 问题是我期待第一个数组($ ct_options)是这样的(过滤'value3'不是在白名单中):
Array (
[key1] => value1
[key2] => value2
[key4] => value4 )
但我得到的是:
Array (
[0] => value1
[1] => value2
[2] => value4 )
有人可以告诉我,我做错了什么吗?
答案 0 :(得分:1)
答案被发现,感谢n-dru。
我在foreach循环后使用了一个排序($ ct_options)而不是asort($ ct_options)。 $ ct_options数组中的值随后丢失了所有索引。
感谢您的帮助。
答案 1 :(得分:0)
您正在检查$ ct_load,in_array($key, $ct_load)
中是否存在$ key,以及您希望过滤的值为3的代码。
<?php
$array = array("key1" => "value1", "key2" => "value2", "key3" => "value3", "key4" => "value4");
$array2 = array("value1", "value2", "value4");
foreach($array as $key => $value ){
if ( in_array($value, $array2) ){
$newArray[$key] = $value;
}
}
echo "<pre>";
print_r($newArray);
echo "</pre>";
?>
输出:
Array
(
[key1] => value1
[key2] => value2
[key4] => value4
)
答案 2 :(得分:0)
对于此问题,存在array_uintersect函数。