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

时间:2013-08-27 14:58:21

标签: php arrays

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

2 个答案:

答案 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);