Avatar ·

PHP中array_map、array_walk和array_filter的区别是什么?

大家好!我刚开始学习PHP,一直搞不懂array_map、array_walk和array_filter之间的区别。看起来它们都接受callback并应用于数组。但当我尝试在实际代码中使用它们时,结果却不同,或者我根本不知道选择哪一个。 例如,我有一个数字数组: ```php $numbers = [1, 2, 3, 4, 5]; ``` 我想: 1. 将每个数字乘以2。 2. 输出每个数字,前缀为"Number: "。 3. 只过滤出偶数。 我试过array_map: ```php $doubled = array_map(function($n) { return $n * 2; }, $numbers); ``` 似乎可以工作,返回一个新数组。但array_walk也能用吗?或者array_filter? 试过array_walk: ```php array_walk($numbers, function(&$n) { $n *= 2; }); ``` 现在$numbers被修改了。但如果我只想输出而不修改呢? 还有array_filter: ```php $even = array_filter($numbers, function($n) { return $n % 2 == 0; }); ``` 这里似