在php中以递增的顺序将相同的函数应用于每个数组键

时间:2016-02-14 21:56:24

标签: php function multidimensional-array

我在php中使用一个数组,借助函数更新数组中的某些值。该函数工作正常但我想以递增的顺序将函数应用于数组中的每个元素。

以下是功能名称。

    CalculateDate($swappedarray,$row,$SetupTime);

参数$ row是每个数组元素的键号。 我希望函数能做这样的事情。

    CalculateDate($swappedarray,0,$SetupTime);
    CalculateDate($swappedarray,1,$SetupTime);
    CalculateDate($swappedarray,2,$SetupTime);

依此类推,直到最后一个关键号码。 虽然功能正常。我只是无法使用for循环来执行此操作。 “for循环”的代码不起作用,我尝试如下。

    for ($row = 0; $row <= $maxnum; $row++)
     {                                          
      CalculateDate($swappedarray,$row,$SetupTime);
     }

如上所述,如何使该功能完成我需要做的工作。哪个函数适用于每个数组键?

2 个答案:

答案 0 :(得分:0)

这会解决您的问题吗? (用你的起始数组替换'$ inputarray')

function some_callback($rowitem, $key, $userdata)
{
    // echo $key;
    CalculateDate($userdata[0], $key, $userdata[1);
}

array_walk($inputarray, 'some_callback', array($swappedarray, $SetupTime));

基本上,数组遍历适用于为数组中的每个值调用您选择的函数(类似于array_map,除了array_walk使得更容易将其他参数传递给回调函数)。

在这段代码中,我们将$ swappedarray和$ SetupTime传递给回调,方法是将它们放在一个数组中。如果$ swappedarray在调用CalculateData时没有改变,那么最好采取以下措施以避免重新创建相同的数组:

function some_callback($rowitem, $key, $userdata)
{
    // echo $key;
    CalculateDate($userdata[0], $key, $userdata[1);
}

$walk_arguments = array($swappedarray, $SetupTime);
array_walk($inputarray, 'some_callback', array($swappedarray, $walk_arguments));

让我知道它是如何为你工作的。

https://secure.php.net/manual/en/function.array-walk.php https://secure.php.net/manual/en/function.array-map.php

答案 1 :(得分:0)

我只是将函数参数中的数组名称作为引用传递,并且它有效。         CalculateDate(安培; $ swappedarray,$行,$ SetupTime);