提问人:rmoss3475 提问时间:10/13/2022 最后编辑:rmoss3475 更新时间:10/15/2022 访问量:29
PHP 使用 foreach 显示array_filtered结果似乎是错误的 - 有没有一种不那么肮脏的方法?
PHP Displaying an array_filtered result using foreach seems wrong - Is there a less dirty way?
问:
我们有一系列宠物,有名字和种类的定义。
$dogs = array_filter($pets,
fn($v) => $v["species"]=="Dog");
foreach($dogs as $row) echo $row["name"];
在如此漂亮的箭头函数之后,显示结果的 foreach 似乎是错误的。
我错过了什么吗?
答:
0赞
rmoss3475
10/13/2022
#1
foreach(array_filter($pets,
fn($v) => $v["species"]=="Dog") as $row) echo $row["name"];
或者,用 implode() 和 array_column() 替换 foreach 循环:
echo implode(", ",
array_column(
array_filter($pets, fn($v) => $v["species"]=="Dog"),
"name")
);
我猜后者的功能更严格。
0赞
D. Dimopoulos
10/13/2022
#2
https://www.php.net/manual/en/function.array-filter
<?php
$pets = array(
array('name'=>'Jack', 'species'=>'Dog'),
array('name'=>'Jina', 'species'=>'Cat')
);
function select_dog($var)
{
return $var["species"]=="Dog";
}
$dogs = array_filter($pets, 'select_dog');
foreach($dogs as $row) echo $row["name"]
?>
评论
print_r($dogs);
它是如何工作的echo implode(', ', array_column($dogs, 'name'));