Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP关联数组-返回验证列表中存在键的所有键值对?_Php_Arrays_Compare_Associative Array_Associative - Fatal编程技术网

PHP关联数组-返回验证列表中存在键的所有键值对?

PHP关联数组-返回验证列表中存在键的所有键值对?,php,arrays,compare,associative-array,associative,Php,Arrays,Compare,Associative Array,Associative,例如: $searchParameters = array( 'parameter1' => 'value1', 'parameter2' => 'value2', 'parameter3' => 'value3', ); $allowedParamters = array('parameter1','parameter2'); 获取仅包含允许对的$searchParameters的最佳方法是什么 foreach($searchParameters

例如:

$searchParameters = array(
    'parameter1' => 'value1',
    'parameter2' => 'value2',
    'parameter3' => 'value3',
);

$allowedParamters = array('parameter1','parameter2');
获取仅包含允许对的
$searchParameters
的最佳方法是什么

foreach($searchParameters as $key => $value) {
    if(!array_key_exists($key, $allowedParamters)) {
        unset($searchParameters[$key];
    }
}
这将删除不允许的键及其值。

使用:


这会比使用AFORACH溶液更重吗?它必须循环通过每一个,并检查关键点,但另外还有数组翻转。这是我见过的最整洁的方式
array\u intersect\u key()
具有内部优化功能,它不会只使用循环。但就记忆而言,这会更重,是的。就时间而言,你必须检查这一点。我的测试显示,
array\u intersect()
(链接不会显示执行时间,因为sandbox正在阻止回调,但您可以从那里粘贴代码并进行检查)好的,这可能对较小的数组更好,任何大的数组和其他解决方案都会节省内存。谢谢在大型阵列上,这将以更快的速度获胜(因为内部
array\u intersect\u key()
针对普通循环进行优化)。但是如果内存很重要,那么使用loop,是的。因此这是为了速度,foreach for memory这可能比array_intersect_key方法慢,但是我认为对于大型数组更好,因为它可以避免克隆它。谢谢
$searchParameters = array(
    'parameter1' => 'value1',
    'parameter2' => 'value2',
    'parameter3' => 'value3',
);
$allowedParamters = array('parameter1','parameter2');

$result = array_intersect_key($searchParameters, array_flip($allowedParamters));
foreach($searchParameters as $key=>$value){
    if(in_array($key,$allowedParamters)){
        $trueResult[$key] = $value;
    }
}
print_r($trueResult);