我在php中有以下数组:
$a = $array(0, 4, 5, 7);
我想在不编写循环的情况下递增所有值(for,foreach ...)
// increment all values
// $a is now array(1, 5, 6, 8)
在PHP中可以吗?
通过扩展,是否可以在每个元素上调用一个函数,并用函数的返回值替换该元素?
例如:
$a = doubleValues($a); // array(0, 8, 10, 14)
答案 0 :(得分:35)
这是array_map()
的作业(将在内部循环):
$a = array(0, 4, 5, 7);
// PHP 5.3+ anonmymous function.
$output = array_map(function($val) { return $val+1; }, $a);
print_r($output);
Array
(
[0] => 1
[1] => 5
[2] => 6
[3] => 8
)
按OP编辑:
function doubleValues($a) {
return array_map(function($val) { return $val * 2; }, $a);
}
答案 1 :(得分:5)
是的,这可以使用其他答案中提到的PHP函数array_map()。这个解决方案是完全正确和有用的。但你应该考虑,一个简单的foreach循环会更快,内存更少。此外,它为其他程序员和用户提供了更好的可读性。几乎每个人都知道,foreach循环正在做什么以及它是如何工作的,但大多数PHP用户并不常见于array_map()函数。
答案 2 :(得分:0)
$arr = array(0, 4, 5, 7);
function val($val) { return $val+1; }
$arr = array_map( 'val' , $arr );
print_r( $arr );
见here