簡體   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