我刚写了一个数组键,只返回$ _POST
形式的确切键function array_key_exists_exact($strkeys, $search)
{
$keys = split('\|',$strkeys);
foreach($keys as $key)
{
if(array_key_exists($key,$search))
{
$newkeys[$key]=$key;
unset($newkeys[$key]);
}
else
{
}
}
return $newkeys;
}
然而它正在返回所有键,我做错了什么。
例如:
$str="email|phone|address|school|country";
array_key_exists_exact($str, $_POST)
应该只返回基于$ str。
的表单中包含的内容所以,如果我的表格有:
<form>
<input type=text name=email>
<input type=text name=phone>
<input type=text name=address>
</form>
out put应该是:
array("email", "phone", "address")
现在输出:array("email", "phone", "address", "school", "country").
是的,我必须通过$str="email|phone|address|school|country";
答案 0 :(得分:0)
您在寻找array_intersect
吗?
$possible = array('email', 'phone', ...);
$existing = array_intersect($possible, array_keys($_POST));
var_dump($existing);
答案 1 :(得分:0)
我不知道你的功能有什么问题, split()一开始就被弃用了,所以我想我会写一个新的,这里是:
$str="email|phone|phone|school|country";
$_POST['email'] = 'test2';
$_POST['school'] = 'test1';
function return_array_keys($strkeys,$search) {
$strings = explode('|',$strkeys);
foreach($strings as $key) {
if(array_key_exists(trim($key),$search)) {
$newkeys[$key] = $search[$key];
}else {
continue;
}
}
return $newkeys;
}
$test = return_array_keys($str, $_POST);
var_dump($test);