Php 如何使用其他数组按键筛选数组
我现在在我的项目上工作了几个小时,我有一些来自早期数组的密钥,我想循环到我的新数组,并从早期数组中选择密钥的值 早期阵列:Php 如何使用其他数组按键筛选数组,php,arrays,Php,Arrays,我现在在我的项目上工作了几个小时,我有一些来自早期数组的密钥,我想循环到我的新数组,并从早期数组中选择密钥的值 早期阵列: $old_keys = ['key1','key2','key3']; 新阵列: $result = ['key1' => 'foo', 'key2' => 'bar', 'key6' => 'ipsum']; 我想要的输出是: $output = ['foo', 'bar']; $flat = iterator_to_array(new Recur
$old_keys = ['key1','key2','key3'];
新阵列:
$result = ['key1' => 'foo', 'key2' => 'bar', 'key6' => 'ipsum'];
我想要的输出是:
$output = ['foo', 'bar'];
$flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($result)), true);
这是我做的:
foreach ($old_keys as $old_key) {
$output[] = array_column($result, $old_key);
}
return $output;
我做错了什么,因为我得到的所有东西都是空数组
非常感谢
更新:
$keys = array_flip($old_keys);
$output = array_values(array_intersect_key($result, $keys));
echo '<pre>';
var_dump($output);
我想要的是:
$output = ['foo', 'bar'];
$flat = iterator_to_array(new RecursiveIteratorIterator(new RecursiveArrayIterator($result)), true);
解决方案:
$old_keys = array_flip(['key1','key2','key3']);
$result = ['key1' => 'foo', 'key2' => 'bar', 'key6' => 'ipsum'];
$output=array_intersect_key($result,$old_keys);
print_r($output);
使用
$old\u keys
过滤$result
数组,但将$old\u keys
值用作键:
$output=array_values(array_intersect_key($result,$old_keys));
如果要重新索引结果中的键,请将$output
声明替换为:
谢谢,但我得到的是一个空数组作为输出,因为结果是多维数组。@PieterDijkstra在你的问题中,
$result
不是多维数组。请更新您的问题,以多维数组形式呈现$result
。你必须提供给我一个正确的样本来操作,这样我才能复制问题并解决问题。我不知道是否需要解释这一点,但我的代码取代了你的代码。你不需要做任何循环。您可以返回打印值。如果结果数组中没有旧键,则输出将是空数组。请参阅我的更新,我已经用您的代码更新了我的代码,但它不能按我所希望的方式工作。您的代码肯定有其他问题,因为这样做是有效的:当您仍在这里时,您可能希望重新命名您的问题,因为这不是一个准确的方法来描述你的过程。你有更好的标题吗?可能是这样的:如何使用另一个数组按键过滤数组