-1

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

4

2 回答 2

0

你在找array_intersect吗?

$possible = array('email', 'phone', ...);
$existing = array_intersect($possible, array_keys($_POST));
var_dump($existing);
于 2013-08-27T15:04:12.667 回答
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);
于 2013-08-27T15:15:20.717 回答