За последние 24 часа нас посетили 35384 программиста и 1814 роботов. Сейчас ищут 948 программистов ...

Заполнить пропущенные элементы массива

Тема в разделе "PHP для новичков", создана пользователем Любитель котиков, 31 июл 2018.

  1. Любитель котиков

    С нами с:
    23 окт 2017
    Сообщения:
    26
    Симпатии:
    1
    Есть массив, например такой: [1 => 0, 3 => 0].
    И есть еще один массив: [1, 2, 3].
    Я хочу чтобы в результате получилось: [0 => 1, 1 => 0, 2 => 2, 3 => 0, 4 => 3].

    Т.е. значения из второго массива вставляются на место пропущенных числовых ключей первого, а когда пропуски кончаются - то просто дописываются в конец. Подскажите как это сделать?
     
  2. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Оно?

    PHP:
    1. <?php
    2.  
    3. function test($a, $b){
    4.  
    5.     $resultArr = [];
    6.  
    7.     $count = (max(array_keys($a)) >= max(array_keys($b))) ? max(array_keys($a)) : max(array_keys($b)) ;
    8.  
    9.  
    10.     for ($key=0; $key < $count+1; $key++) {
    11.  
    12.         if (isset($a[$key]) && isset($b[$key])) {
    13.  
    14.             $resultArr[] = $a[$key];
    15.             $resultArr[] = $b[$key];
    16.  
    17.         }elseif (isset($a[$key]) && !isset($b[$key])) {
    18.  
    19.             $resultArr[] = $a[$key];
    20.  
    21.         }elseif (!isset($a[$key]) && isset($b[$key])) {
    22.  
    23.             $resultArr[] = $b[$key];
    24.  
    25.         }else{
    26.  
    27.            //$resultArr[] = 'undefined';
    28.             continue;
    29.  
    30.         }    
    31.      
    32.     }
    33.  
    34.     return $resultArr;
    35.  
    36.  
    37. }
    38.  
    39.  
    40.  
    41. $arrOne = [1 => 0, 7 => 7, 3 => 0, 9 => 9];
    42. $arrTwo = [1, 2, 3];
    43.  
    44.  
    45.  
    46. echo "<pre>";
    47. print_r( test($arrOne, $arrTwo) );
    48. echo "</pre>";
    49.  
    50.  
    51. ?>
     
    #2 AlexandrS, 1 авг 2018
    Последнее редактирование: 1 авг 2018
  3. Любитель котиков

    С нами с:
    23 окт 2017
    Сообщения:
    26
    Симпатии:
    1
    Нет. Ваш вывод:

    Код (Text):
    1. Array
    2. (
    3.     [0] => 1
    4.     [1] => 0
    5.     [2] => 2
    6.     [3] => 3
    7.     [4] => 0
    8.     [5] => 7
    9.     [6] => 9
    10. )
    А должно быть с вашими данными:

    Код (Text):
    1. Array
    2. (
    3.     [0] => 1
    4.     [1] => 0
    5.     [2] => 2
    6.     [3] => 0
    7.     [4] => 3
    8.     [7] => 7
    9.     [9] => 9
    10. )