Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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 - Fatal编程技术网

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
。你必须提供给我一个正确的样本来操作,这样我才能复制问题并解决问题。我不知道是否需要解释这一点,但我的代码取代了你的代码。你不需要做任何循环。您可以
返回
打印值。如果结果数组中没有旧键,则输出将是空数组。请参阅我的更新,我已经用您的代码更新了我的代码,但它不能按我所希望的方式工作。您的代码肯定有其他问题,因为这样做是有效的:当您仍在这里时,您可能希望重新命名您的问题,因为这不是一个准确的方法来描述你的过程。你有更好的标题吗?可能是这样的:如何使用另一个数组按键过滤数组