是否可以在php中没有循环的情况下更改数组的所有值?

2022-08-30 19:33:17

我在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)

答案 1

这是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);
}

答案 2

是的,使用PHP函数array_map()这是可能的,如其他答案中所述。这个解决方案是完全正确和有用的。但你应该考虑,一个简单的foreach循环会更快,记忆强度更低。此外,它还为其他程序员和用户提供了更好的可读性。几乎每个人都知道,foreach循环在做什么以及它是如何工作的,但大多数PHP用户在array_map()函数中并不常见。