3v4l.org

run code in 300+ PHP versions simultaneously
<?php // 素材となる配列 $base_arr = array( array( 'time' => ['1558432388750'], 'action' => 'lose', 'target_id' => '76', 'actor_id' => ['87'], 'type' => 'a', ), array( 'time' => ['1558432437780','1558432449937'], 'action' => 'get', 'target_id' => '10', 'actor_id' => ['9','51'], 'type' => 'b', ) ); $time_ux = ceil(microtime(true)*1000); $new_arr = array( array( 'time' => [$time_ux], 'action' => 'get', 'target_id' => '10', 'actor_id' => ['3'], 'type' => 'a', ) ); // $base_arr がない場合 if( empty($base_arr) || is_null($base_arr) ){ $update_arr = $new_arr; } // すでに $base_arr がある場合 else{ foreach ( $base_arr as $base_keys ){ if( $base_keys['action'] == $new_arr[0]['action'] && $base_keys['target_id'] == $new_arr[0]['target_id'] ){ for( $i = 0; $i < count($base_arr); $i++ ) { $base_arr[$i]['time'] = array_slice( array_merge($new_arr[0]['time'], $base_arr[$i]['time']), 0, 20 ); $base_arr[$i]['actor_id'] = array_slice( array_merge($new_arr[0]['actor_id'], $base_arr[$i]['actor_id']), 0, 20 ); $base_arr[$i]['type'] = 'a'; } } } $update_arr = $base_arr; } // 確認 var_export($update_arr);
Output for 7.1.0 - 7.1.33, 7.2.0 - 7.2.26, 7.3.0 - 7.3.13, 7.4.0 - 7.4.1
array ( 0 => array ( 'time' => array ( 0 => 1558435357001.0, 1 => '1558432388750', ), 'action' => 'lose', 'target_id' => '76', 'actor_id' => array ( 0 => '3', 1 => '87', ), 'type' => 'a', ), 1 => array ( 'time' => array ( 0 => 1558435357001.0, 1 => '1558432437780', 2 => '1558432449937', ), 'action' => 'get', 'target_id' => '10', 'actor_id' => array ( 0 => '3', 1 => '9', 2 => '51', ), 'type' => 'a', ), )

preferences:
94.96 ms | 403 KiB | 82 Q