我很好奇是否有更好的方法去做我正在做的事情。我对php很新,所以我对其他人认为谁花更多时间学习语言感兴趣。
我想做什么:在数组中的每个对象上调用一个函数
我在做什么:
array_map(function($object) { $object->loadEvents(); }, $patients);
这很好,而且很有效。我也可以使用 for循环,
为什么我要问:我已经习惯于在我不能使用for循环时习惯使用for循环,所以我找到了一种方法来使用 array_map 即可。问题是,无论我在哪里,似乎人们都在使用 array_map 将结果映射到新数组。当我基本上想要 array_map 的功能但没有返回值时。
有更好的方法吗?在这之外和for循环? for循环是一种更好的方法吗?
答案 0 :(得分:3)
PHP中用于循环数组的通常习惯是foreach
运算符。可以使用array_walk
和array_map
,但它们并不是常见的习惯用法,因为直到相对较新版本的PHP创建匿名函数不方便。在PHP 5.3之前,您必须调用create_function()
来动态创建函数。因此,array_walk
和array_map
通常仅在具有您想要的命名函数时使用,例如。
$array = array_map('trim', $array);
但即使现在您可以使用function
创建匿名函数,但很多人都会找到
array_walk($array, function($x) {
...
});
的可读性低于
foreach ($array as $xx) {
...
}
array_map
的使用范围往往超过array_walk
,因为它可以用作更大表达式的一部分。使用foreach
,您必须使用一个循环来推送到结果数组,然后使用代码对其进行操作。
答案 1 :(得分:0)
使用循环有什么问题?这就是它的目的所在。
foreach ($patients as $patient) {
$patient->loadEvents();
}
每个人都很简单明了。编写冗长的代码来实现相同的工作有什么意义,因为它看起来很酷"很酷"或者每个人都在做什么?
我不习惯不使用for循环,所以我想出了一种使用array_map的方法。
你是否因为你已经设定自己没有使用循环的规则而错误地使用array_map()
?