从关联阵列(PHP)中提取值的子集
-
05-09-2019 - |
题
我想做一些看似非常简单的事情,但是我找不到任何东西:只需提取类似Array_splice的数组的子集,但是 使用键检索值 :
$data = array('personName' => 'John', 'personAge' => 99, 'personId' => 1,
/* many more data I don't need here ... */);
list($name, $age, $id) = array_splice_by_keys($data,
array('personName', 'personAge', 'personId');
如果其他所有故障都失败了,难道是否存在键键过滤关联数组的内置功能?例如:
$ FILFEREDARRAY = array__ extract__keys__和__values($ srcarray,$ arrayofwantedkeys);
// create a new array with ONLY those key => values I need
$wanted_values = array_extract_keys_and_values($data,
array('personName', 'personAge', 'personId');
echo $wanted_values['personName'];
我想我要执行第一个的原因是我不想重复整个代码上的关联阵列访问,似乎更好地优化了复制大量使用的值(例如,在循环中),进入本地变量,此外,键入$ name比$ somearray ['name']要容易得多。
编辑:谢谢,我想与列表一起使用,解决方案将是
list($x, $y, $z) = array_values(array_intersect_key($array, array_flip($wantedKeys)));
Array_flip的插曲使用!
解决方案
在PHP版本> = 5.1.0中,您可以使用 array_intersect_key
:
$data = array('personName' => 'John', 'personAge' => 99, 'personId' => 1,
'test' => 23);
$ex = array('personName'=>0, 'personAge'=>0, 'personId'=>0);
var_dump(array_intersect_key($data, $ex));
值 $ex
没关系,他们只需要在场。
其他提示
这与SilentGhost的答案基本相同,但这可能更容易,而且可能会慢一点。
array_intersect_key($array, array_flip($wantedKeys));
不隶属于 StackOverflow