📜  仅对特定键数组 php 执行 foreach 循环(1)

📅  最后修改于: 2023-12-03 15:36:12.332000             🧑  作者: Mango

仅对特定键数组 PHP 执行 foreach 循环

在 PHP 中,我们可以使用 foreach 循环迭代数组,但是有时候我们只想对数组中的特定键进行循环。下面介绍两种方法实现。

方法一:使用 array_intersect_key() 函数

可以使用 array_intersect_key() 函数获取两个或多个数组的交集,其中的键数组即为我们指定的特定键。

$keys = array("key1", "key2", "key3");
$data = array(
    "key1" => "value1",
    "key2" => "value2",
    "key3" => "value3",
    "key4" => "value4",
    "key5" => "value5"
);

$filtered_data = array_intersect_key($data, array_flip($keys));

foreach ($filtered_data as $key => $value) {
    echo $key . ": " . $value . "\n";
}

输出:

key1: value1
key2: value2
key3: value3

在上面的代码中,我们使用 array_flip() 函数将 $keys 数组中的键作为值,创建一个反向数组。然后将其传递给 array_intersect_key() 函数。它返回一个新的数组,其中只包含 $data 数组中与 $keys 数组键相同的元素。最后,我们可以使用 foreach 循环输出 $filtered_data 数组中的元素。

方法二:使用 array_filter() 函数

还可以使用 array_filter() 函数,根据键的存在与否过滤数组,并使用 foreach 循环遍历筛选后的数组。

$keys = array("key1", "key2", "key3");
$data = array(
    "key1" => "value1",
    "key2" => "value2",
    "key3" => "value3",
    "key4" => "value4",
    "key5" => "value5"
);

$filtered_data = array_filter($data, function ($k) use ($keys) {
    return in_array($k, $keys);
}, ARRAY_FILTER_USE_KEY);

foreach ($filtered_data as $key => $value) {
    echo $key . ": " . $value . "\n";
}

输出:

key1: value1
key2: value2
key3: value3

在上面的代码中,我们使用 array_filter() 函数,并传递一个回调函数来判断每个元素的键是否存在于 $keys 数组中。该函数使用 in_array() 函数来检查元素键是否出现在 $keys 数组中。使用 ARRAY_FILTER_USE_KEY 常量告诉 array_filter() 函数我们要使用键作为过滤条件。

最后,使用 foreach 循环输出 $filtered_data 数组中的元素。

结论

以上是两种方法,可以轻松的实现对特定键数组 PHP 执行 foreach 循环。根据实际需求来选择合适的方法即可。