Слияние массива в For [PHP] - PullRequest
1 голос
/ 14 июня 2019

X раз for процесс завершен.Новые данные массива добавляются каждый раз for prcess.

 $input_array = array("success"=>true ,'ab' => 2,'def' => 1);

for ($i = 0; $i <= 6;$i++) {
    $data = [
        'lg_' . $i => 'LG: T-' . $i
    ];
    $arrayMerging = array_merge($input_array, $data);
}

print_r($arrayMerging);

Array ([success] => true, [ab] => 2 [def] => 1 [leg_6] =>LG: T-6)

Это просто добавляет последнюю часть (6).Секции 1,2,3,4,5 не существуют в массиве.В чем может быть причина?

Ответы [ 3 ]

1 голос
/ 14 июня 2019

Это потому, что вы не сливаете результат обратно в окончательный массив. Попробуйте это:

$input_array = array("success"=>true ,'ab' => 2,'def' => 1);

for ($i = 0; $i <= 6;$i++) {
    $data = [
        'lg_' . $i => 'LG: T-' . $i
    ];
    $input_array = array_merge($input_array, $data);
}

print_r($input_array);

Другой пример: http://sandbox.onlinephpfunctions.com/code/052c3edaca2e8ac7b819201eb5bb3b61d384bca5

1 голос
/ 14 июня 2019

Причина, по которой вы видите только последний ключ в цикле, состоит в том, что массив результата / аккумулятора ($arrayMerging) никогда не назначается, поэтому вы начинаете с нуля на каждой итерации.

Вы, вероятно, имели в виду что-то вроде:

<?php

$input_array = ["success" => true ,'ab' => 2,'def' => 1];
$arrayMerging = $input_array;

for ($i = 0; $i <= 6; $i++) {
    $data = ["lg_$i" => 'LG: T-' . $i];
    $arrayMerging = array_merge($arrayMerging, $data);
}

print_r($arrayMerging);

или более понятный как:

<?php

$input_array = ["success" => true , "ab" => 2, "def" => 1];
$merged = $input_array;

for ($i = 0; $i <= 6; $i++) {
    $merged["lg_$i"] = "LG: T-$i";
}

print_r($merged);

, где мы присваиваем свойства напрямую.

Вывод:

Array
(
    [success] => 1
    [ab] => 2
    [def] => 1
    [lg_0] => LG: T-0
    [lg_1] => LG: T-1
    [lg_2] => LG: T-2
    [lg_3] => LG: T-3
    [lg_4] => LG: T-4
    [lg_5] => LG: T-5
    [lg_6] => LG: T-6
)
0 голосов
/ 14 июня 2019

Сделайте это так с array_push,

<?php
$input_array = array("success"=>true ,'ab' => 2,'def' => 1);

for ($i = 0; $i <= 6;$i++) {
    $data = [
        'lg_' . $i => 'LG: T-' . $i
    ];
    array_push($input_array, $data);
}

print_r($input_array);
?>

DEMO: https://3v4l.org/CImYY

Согласно комментарию:

<?php
$input_array = array("success"=>true ,'ab' => 2,'def' => 1);

for ($i = 0; $i <= 6;$i++) {
    $data = [
        'lg_' . $i => 'LG: T-' . $i
    ];
  $input_array = array_merge($input_array, $data); // see this line
}

  print_r($input_array);
?>

ДЕМО: https://3v4l.org/R57v6

...