PHP Array Swap в динамическом вводе - PullRequest
0 голосов
/ 30 октября 2019

У меня есть два динамических массива целых чисел, одну вещь, которую я хочу сделать, это поменять значение внутри моего массива на основе ввода.

Например, мои два массива:

$myArray_a = 
Array
(
  [0] => 21306000
  [1] => 50627412
  [2] => 2560227681
  [3] => 2796924085
  [4] => 0
  [5] => 0
)

$myArray_b = 
Array
(
  [0] => 505909732
  [1] => 400831144
  [2] => 2693575413
  [3] => 3072271817
  [4] => 5277000763
  [5] => 4944000763
)

Имой ожидаемый результат был, когда input = 3, индекс массива B с номером 4 и 5 заменяются массивом A. с таким же индексом.

$output = 
Array
(
  [0] => 21306000
  [1] => 50627412
  [2] => 2560227681
  [3] => 2796924085
  [4] => 5277000763
  [5] => 4944000763
)

Я хочу переключиться, есть ли простой способ сделать это? Или это потребует цикла + создания нового массива?

Ответы [ 4 ]

1 голос
/ 30 октября 2019

Вы можете сделать это,

    $index = 3;
    $result = $B;
    for($i = 0; $i<= $index; $i++){
        $result[$i] = $A[$i];
    }
1 голос
/ 30 октября 2019

Если вы используете числовой индекс, вы можете использовать array_slice

Это создаст массив с первыми четырьмя записями, а затем добавит второй массив, пропуская существующие ключи.

$count = 4; // which is 3 + 1
$a = [21306000,50627412,2560227681,2796924085,0,0];
$b = [505909732,400831144,2693575413,3072271817,5277000763,4944000763];

$output = array_slice( $a, 0, $count ) + $b;

//Array
//(
//    [0] => 21306000
//    [1] => 50627412
//    [2] => 2560227681
//    [3] => 2796924085
//    [4] => 5277000763
//    [5] => 4944000763
//)
0 голосов
/ 31 октября 2019
<?php

$a = [2,3,4,5,0,0];
$b = [20,30,40,50,60,70];

$counter = 0;
$out = array_map(function($m, $n ) use (&$counter)
{
    return $counter++>3 ? $n : $m;
}, $a, $b);

var_export($out);

Выход:

array (
  0 => 2,
  1 => 3,
  2 => 4,
  3 => 5,
  4 => 60,
  5 => 70,
)
0 голосов
/ 30 октября 2019

Вы можете использовать foreach

 foreach($myArray_a as $k => &$v){
  empty($v) &&  isset($myArray_b[$k]) ? ($v = $myArray_b[$k]) : ''; 
 }

DEMO: - https://3v4l.org/nRj68

...