给定的数组键只返回表单中的键


given array keys only return keys from form

我刚刚写了一个数组键,只返回形式为$_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>

输出应该是:

array("email", "phone", "address")

现在它输出这个:array("email", "phone", "address", "school", "country").

是的,我必须通过$str="email|phone|address|school|country";

你在找array_intersect吗?

$possible = array('email', 'phone', ...);
$existing = array_intersect($possible, array_keys($_POST));
var_dump($existing);

我不知道你的函数出了什么问题,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);