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; });
```
这里似