php使用相同的密钥更新基于其他数组的数组值

时间:2013-06-14 21:45:59

标签: php arrays for-loop

我有以下情况:

$starterArray = array ('192.168.3.41:8013'=>0,'192.168.3.41:8023'=>0,'192.168.3.41:8033'=>0);

在要求中我有另一个数组来计算应用程序的某些事件,这个数组使用与我的第一个数组相同的键,但值可以改变),所以最后我可以有类似的东西:

$processArray = array ('192.168.3.41:8013'=>3,'192.168.3.41:8023'=>5,'192.168.3.41:8033'=>7);

我想用进程数组的值更新我的starter数组的值,例如,最后,我应该:

$starterArray = array ('192.168.3.41:8013'=>3,'192.168.3.41:8023'=>5,'192.168.3.41:8033'=>7);

我知道这可以通过使用$starterArray = $processArray;

来实现

然后在某些时刻,我需要将一些单位加到我的数组的值中,例如+1或+2:

应该是以下内容?

foreach ($starterArray as $key => $value) {
    $starterArray[$value] = $starterArray[$value]+1;
}

然后,对于我的流程数组,我需要将值设置为0

foreach ($processArray as $key => $value) {
    $processArray[$value] = 0;
}

这是我尝试的但是它不起作用,如果有人可以帮助我,我将真正应对它。提前谢谢。

PD:我知道这些是奇怪的要求,但这就是我被要求做的事情......

3 个答案:

答案 0 :(得分:1)

您需要将$key放在括号中,而不是$value

或者,您可以这样做:

foreach ($starterArray as $key => &$value) {
    $value++; /* put here whatever formula you want */
}

答案 1 :(得分:1)

foreach ($starterArray as $key => $value) {
    $starterArray[$key] = $value+1;
    // or $starterArray[$key] = 0;
}

答案 2 :(得分:1)

你快到了: -

foreach ($processArray as $key => $value) {
    $starterArray[$key] = $value +1;
}

然后: -

foreach ($processArray as $key => $value) {
    $processArray[$key] = 0;
}

但是,您可以在一个循环中完成所有操作: -

foreach ($processArray as $key => $value) {
    $starterArray[$key] = $value +1;
    $processArray[$key] = 0;
}