За последние 24 часа нас посетили 8806 программистов и 475 роботов. Сейчас ищут 209 программистов ...

Объединить массивы после цикла или...

Тема в разделе "PHP для новичков", создана пользователем sliderodessa, 13 сен 2020.

  1. sliderodessa

    sliderodessa Новичок

    С нами с:
    13 сен 2020
    Сообщения:
    3
    Симпатии:
    0
    Всем привет. Если, что, начинающий. Есть задача пройтись по многомерному массиву и проверить наличие четных чисел в каждом подмассиве. Если четных 2 числа, то заносим весь подмассив в новый массив, например $arr2. Если кол-во четных 3, то массив заносится в другой, типа $arr3 и так далее. Дальше нужно вывести количество подмассивов в каждом новом массиве. В принципе, вопрос решил, но он мне не очень нравится. Через foreach, в котором условие if. Проблема в том, что в этом решении есть длинная строка
    if($val[0] % 2 == 0 && $val[1] % 2 == 0 && $val[2] % 2 == 0 && $val[3] % 2 == 0 && $val[4] % 2 == 0) от которой и хочется избавится. Т.е. проверяю каждый элемент, потом, если определенное количество, то дальше в другой массив. Как то так)))
    В общем, вот код
    PHP:
    1. $result = [];
    2.     $a = [];
    3.     $x = [];
    4.         for($i = 0, $j = 0; $i < 6; $i++, $j++)
    5.             {
    6.                 if($arr[$i] % 2 == 0)
    7.                 $result[] = $arr[$j];
    8.             }
    9.         //print_r($result);
    10.         $x = array_merge($x, $result);
    11.         if(count($result) == 4)
    12.         {
    13.             $a[] = $arr;
    14.             print_r($a);
    15.             //echo "4 + 2 = " . count($a);
    16.         }
    17.         if(count($result) == 3)
    18.         {
    19.             $b[] = $arr;
    20.             //print_r($b);
    21.             //echo "3 + 3 = " . count($b);
    22.         }
    получаю нужные массивы, но подсчитать уже не получается. Каждый массив выводится отдельно и считается как 1.
    Пытался после цикла объединить все массивы через array_merge, результат что до, что после цикла
    Array
    (
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 12
    )
    Array
    (
    [0] => 10
    [1] => 18
    [2] => 14
    [3] => 16
    )

    А мне нужно
    Array
    (
    [0] => Array
    (
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 12
    [5] => 14
    )

    [1] => Array
    (
    [0] => 3
    [1] => 10
    [2] => 18
    [3] => 14
    [4] => 16
    [5] => 18
    )

    Посоветуйте, как лучше сделать. Заранее благодарен.
     
  2. Drunkenmunky

    Drunkenmunky Новичок

    С нами с:
    12 авг 2020
    Сообщения:
    172
    Симпатии:
    28
  3. sliderodessa

    sliderodessa Новичок

    С нами с:
    13 сен 2020
    Сообщения:
    3
    Симпатии:
    0
    Вопрос отпадает, так как решился при помощи
    array_filter