📜  php 获取当前项 array_reduce 的索引 - PHP (1)

📅  最后修改于: 2023-12-03 14:45:26.038000             🧑  作者: Mango

PHP获取当前项array_reduce的索引

array_reduce()是PHP中一个很强大的函数,可以对数组中的每个元素进行操作,返回一个累加或组合后的值,而当前项的索引在默认情况下是不可用的。那么如何获取当前项的索引呢?下面我们将介绍两种方法。

方法一:使用foreach循环实现

可以通过使用foreach循环来迭代数组并获取索引和值,再将它们合并到数组中。然后,array_reduce()函数执行时,该数组将包含第一个元素的索引和值,而在每次迭代期间,新的项的索引和值将被添加到数组中。

$array = array('a', 'b', 'c');
$result = array_reduce($array, function($carry, $item) {
    $index = count($carry);
    $carry [] = array('index' => $index, 'value' => $item);
    return $carry;
}, array());

在这个例子中,我们将每个元素及其索引作为一个键值对添加到包含它们的数组中。array_reduce()函数使用闭包函数来操作数组,并将结果合并到初始数组 $carry中。在闭包函数中,我们使用PHP的count()函数来获取索引的值,以便在数组中创建数据项。

方法二:使用 array_keys 和 array_values 函数

通过使用array_keys()array_values() 函数,可以分别将数组的键和值获取到两个不同的数组中。这样,在每次迭代中,就可以使用当前元素的数组值来获取索引。

$array = array('a', 'b', 'c');
$keys = array_keys($array);
$values = array_values($array);
$result = array_reduce($keys, function($carry, $item) use($values) {
    $index = $values[$item];
    $carry [] = array('index' => $item, 'value' => $index);
    return $carry;
}, array());

在这个例子中,我们使用array_keys()函数和array_values()函数将数组的键和值放入两个不同的数组中。array_reduce()函数使用闭包函数来操作键并将结果合并到数组 $carry 中。在闭包函数中,我们使用 PHP 的 use 关键字来访问 $values 数组,以便使用当前键值来获取当前元素的数组值,并将结果添加到 $carry 数组中。

以上两种方法都可以用来获取当前项的索引,具体使用哪种取决于具体情况。