За последние 24 часа нас посетили 30647 программистов и 1809 роботов. Сейчас ищут 883 программиста ...

Проблема с многомерными(?) массивами

Тема в разделе "PHP для новичков", создана пользователем perforator99, 23 авг 2016.

Метки:
  1. perforator99

    perforator99 Новичок

    С нами с:
    23 авг 2016
    Сообщения:
    2
    Симпатии:
    0
    привет всем
    вообщем не могу справиться с одним заданием, сижу уже 2 дня и никак... просто никак не выходит сделать...

    есть 3 входящих массива

    массив
    PHP:
    1. x = array(
    2.             [0] => 2
    3.             [1] => 2
    4.             [2] => 0
    5.             [3] => 0
    6.             [4] => 0
    7. );
    массив
    PHP:
    1. y = array(
    2.             [0] => 2 //если у этого массива 2 значения, то у массива z будет 2 значения
    3.             [1] => 4 //если у этого массива 4 значения, то у массива z будет 4 значения соответственно
    4.             [2] => 0
    5.             [3] => 0
    6.             [4] => 0
    7. );
    массив
    PHP:
    1. z = array(
    2.             [0][0] => 2
    3.             [0][1] => 5
    4.             [1][0] => 100
    5.             [1][1] => 6
    6.             [1][2] => 15
    7.             [1][3] => 25
    8. );
    в результате должно выйти
    PHP:
    1. [0] => Array (
    2. [0] => Array ( [x] => x ) [1] => Array ( [x] => x ) [2] => Array ( [y] => y, [z]) =>z) [3] => Array ( [y] => y, [z]) =>z) )
    3. [1] => Array (
    4. [0] => Array ( [x] => x ) [1] => Array ( [x] => x) [2] => Array ( [y] => y, [z]) =>z) [3] => Array ( [y] => y, [z]) =>z) [4] => Array ( [y] => y, [z]) =>z) [5] => Array ( [y] => y, [z]) =>z)
    5. )
    6. )
    проблема в том, что у меня то данные записываются неккоректно в массив, то вообще не записываются
    возможно кто-нибудь что-то подскажет

    всем заранее спасибо
     
    #1 perforator99, 23 авг 2016
    Последнее редактирование модератором: 23 авг 2016
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ответ стандартный - покажи наработки, тебе покажут, где ты ошибся.
     
  3. perforator99

    perforator99 Новичок

    С нами с:
    23 авг 2016
    Сообщения:
    2
    Симпатии:
    0
    только просьба сразу не "закидывать камнями"
    PHP:
    1.                            <?
    2.                             $main_arr = array();
    3.                             $y = $_POST['sec_type'];
    4.                             $z = $_POST['third_type'];
    5.                             #$_POST['first_type'] - это массив Х
    6.                            foreach ($_POST['first_type'] as $x) {
    7.                                 if (!$x)
    8.                                     continue;
    9.                                 $sec_arr = array();
    10.                                 for ($i = 0; $i < $x; $i++) {
    11.                                     $sec_arr[] = array('xType' => 'x');
    12.                                 }
    13.                                 if (!$x)
    14.                                     continue;
    15.                                 for ($j = 0; $j < $y[$i]; $j++) {
    16.                                     $sec_arr[] = array('yType' => 'y', 'zType' => 'z');
    17.                                 }
    18.                                 $main_arr[] = $sec_arr;
    19.                             }
    20.                        
    21.                             print_r($main_arr);
     
    #3 perforator99, 23 авг 2016
    Последнее редактирование модератором: 24 авг 2016
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Сходу бросается в глаза:
    PHP:
    1.  for ($j = 0; $j < $y[$i]; $j++) {
    2.   $sec_arr[] = array('yType' => 'y', 'zType' => 'z');
    3. }
    Ты используешь
    $y[$i]
    при том, что $i у тебя не меняется, потому что оно объявлено в предыдущем for, который является закрытым.

    Иными словами, $i у тебя в этом фрагменте кода всегда равно $x. А не интервалу от 0 до $x.