привет всем вообщем не могу справиться с одним заданием, сижу уже 2 дня и никак... просто никак не выходит сделать... есть 3 входящих массива массив PHP: x = array( [0] => 2 [1] => 2 [2] => 0 [3] => 0 [4] => 0 ); массив PHP: y = array( [0] => 2 //если у этого массива 2 значения, то у массива z будет 2 значения [1] => 4 //если у этого массива 4 значения, то у массива z будет 4 значения соответственно [2] => 0 [3] => 0 [4] => 0 ); массив PHP: z = array( [0][0] => 2 [0][1] => 5 [1][0] => 100 [1][1] => 6 [1][2] => 15 [1][3] => 25 ); в результате должно выйти PHP: Array ( [0] => Array ( [0] => Array ( [x] => x ) [1] => Array ( [x] => x ) [2] => Array ( [y] => y, [z]) =>z) [3] => Array ( [y] => y, [z]) =>z) ) [1] => Array ( [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) ) ) проблема в том, что у меня то данные записываются неккоректно в массив, то вообще не записываются возможно кто-нибудь что-то подскажет всем заранее спасибо
только просьба сразу не "закидывать камнями" PHP: <? $main_arr = array(); $y = $_POST['sec_type']; $z = $_POST['third_type']; #$_POST['first_type'] - это массив Х foreach ($_POST['first_type'] as $x) { if (!$x) continue; $sec_arr = array(); for ($i = 0; $i < $x; $i++) { $sec_arr[] = array('xType' => 'x'); } if (!$x) continue; for ($j = 0; $j < $y[$i]; $j++) { $sec_arr[] = array('yType' => 'y', 'zType' => 'z'); } $main_arr[] = $sec_arr; } print_r($main_arr);
Сходу бросается в глаза: PHP: for ($j = 0; $j < $y[$i]; $j++) { $sec_arr[] = array('yType' => 'y', 'zType' => 'z'); } Ты используешь $y[$i] при том, что $i у тебя не меняется, потому что оно объявлено в предыдущем for, который является закрытым. Иными словами, $i у тебя в этом фрагменте кода всегда равно $x. А не интервалу от 0 до $x.