如何基于更大的数组创建更小的过滤数组。例如,这是更大的数组:
$large_array = array(
'user_email' => array(
'required' => true,
'email' => true,
'max' => 200,
'unique' => 'users'),
'password' => array(
'required' => true,
'min' => 6,
'max' => 20),
'password_again' => array(
'required' => true,
'matches' => 'password'),
'name_first' => array(
'required' => false,
'min' => 2,
'max' => 64),
'name_last' => array(
'required' => false,
'min' => 2,
'max' => 64));
我想根据' user_email'创建一个过滤后的数组。和' name_first'来自大阵列的键。这个过滤后的数组看起来像这样:
$filtered_array = array(
'user_email' => array(
'required' => true,
'email' => true,
'max' => 200,
'unique' => 'users'),
'name_first' => array(
'required' => false,
'min' => 2,
'max' => 64);
在PHP中执行此操作的最佳方法是什么?我试图获取一个带有一组键的函数和$ large_array来创建$ filtered_array。
答案 0 :(得分:0)
将array_filter
与ARRAY_FILTER_USE_KEY
标记一起使用。
像这样:
$filtered_array = array_filter($myarr, function($key){
$keys = array("key1", "key2");
return in_array($key, $keys);
}, ARRAY_FILTER_USE_KEY);
如果你的php版本是< 5.6.0你将无法使用ARRAY_FILTER_USE_KEY
标志,如果你的php版本是< 5.3.0您将无法使用匿名函数语法,但您只需创建一个命名函数并将该名称作为callback
参数的字符串传递。
或者,这应该做同样的事情:
function ($arr, $keys)
{
$newArr = array();
foreach($arr as $key => $val)
{
if(in_array($key, $keys))
$newArr[$key] = $val;
}
return $newArr;
}