繁体   English   中英

根据另一个数组中的值更改数组中的值

[英]Changing values in array based on values in another array

这是我要尝试实现的简单英语示例:如果给定的数字为4,那么我想将等于或小于4的每个值加1到另一个数组的相应索引中。 (希望如此)

所以我的第一个数组看起来像这样:

Array ( [0] => 5 [1] => 6 [2] => 7 [3] => 4 [4] => 3 [5] => 2 [6] => 9 [7] => 8 [8] => 1 [9] => 10 [10] => 11 [11] => 12 [12] => 13 [13] => 14 [14] => 15 [15] => 16 [16] => 17 [17] => 18 ) 

第二个数组如下所示:

Array ( [0] => 4 [1] => 3 [2] => 4 [3] => 4 [4] => 4 [5] => 5 [6] => 4 [7] => 4 [8] => 5 [9] => 4 [10] => 4 [11] => 5 [12] => 5 [13] => 4 [14] => 4 [15] => 4 [16] => 3 [17] => 3 ) 

我希望第二个数组看起来像这样(在第一个数组中的每个低于4的值加1之后),所以添加后

Array ( [0] => 4 [1] => 3 [2] => 4 [3] => 5 [4] => 5 [5] => 6 [6] => 4 [7] => 4 [8] => 6 [9] => 4 [10] => 4 [11] => 5 [12] => 5 [13] => 4 [14] => 4 [15] => 4 [16] => 3 [17] => 3 ) 

其中索引3、4、5、9已更改。

我认为您正在寻找array_map

function increase( $m, $n )
{
  if( $m < 4 )
  {
   return $n+1;
  }
  return $n
}

$arr1;
$arr2;

print_r( array_map("increase", $arr1, $arr2 ) );

注意:这将返回一个新数组。

使用array_walk

array_walk($arr2,function(&$v,$k) use($arr1) { if($arr1[$k]<=$v){ $v=$v+1;} });

演示版

[要么]

一个简单的foreach就可以了

foreach($arr1 as $k=>$v)
{
    if($v<=$arr2[$k])
    {
        $arr2[$k]=$arr2[$k]+1;
    }
}
print_r($arr2);

演示版

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM