我想知道,在表现方面......
如果我有一个包含30个元素的$ _REQUEST数组,并且我需要使用函数来获取元素以将它们设置为新数组,那么何时使用多个ISSET与FOREACH + SWITCH会更好:
示例:
方法1:
foreach($_REQUEST['data'] as $key => $val)
{
switch($key){
case 'blah':
$newarray['blah'] = $val;
break;
.....
case 'blah2':
.....
case 'blah3':
.....
case 'blah4':
.....
}
}
方法3:
if(isset($_REQUEST['data']['blah'])) $newarray['blah'] = $_REQUEST['data']['blah'];
if(isset($_REQUEST['data']['blah2'])) $newarray['blah2'] = $_REQUEST['data']['blah2'];
我认为对于方法3,最好使用if(isset),但我不确定,何时使用一个优于另一个?
答案 0 :(得分:1)
您可以使用array_intersect_key
和每个所需密钥的数组更加明确地执行此操作:
$method1Keys = array_flip(['some','keys']);
$method2Keys = array_flip(['different','ones']);
$method3Keys = array_flip(['andsome','more']);
$method1KeyValueArray = array_intersect_key($_REQUEST['data'],$method1Keys);
$method2KeyValueArray = array_intersect_key( $_REQUEST['data'],$method2Keys);
$method3KeyValueArray = array_intersect_key( $_REQUEST['data'],$method3Keys);
答案 1 :(得分:0)
在您的代码中,$newarray
将具有与源相同的键,并且您在匹配键处设置相同的值。最快的方式:
$newarray = $_REQUEST['data'];