2013-03-09 3 views
0

У меня есть подобный кодСоздать многомерный массив,

$assoc = ['name','lastname','pesel']; 
      $inputs = ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b',]; 
      $counter = 0; 
      $internalcounter = 0; 
      $zero = 0; 
      $content = array(); 
      while ($counter < sizeof($inputs)) 
      { 
       if($internalcounter == sizeof($assoc)) 
       { 
        $counter++; 
        $internalcounter = 0; 


       } 
       else 
       { 
        array_push($content, $inputs[$counter]); 
        $counter++; 
        $internalcounter++; 
       } 


      } 
      var_dump($content); 

Он создал массив, который выглядит

`array(6) { [0] => string(1) "a" [1] => string(1) "a" [2] => string(1) "a" [3] => string(1) "b" [4] => string(1) "b" [5] => string(1) "b" }` 

Но я хочу создать многомерный массив

Array ([0] => Array ([0] => "a" [1] => "a" [2] => "a" ) [1] => Array ([0] => "b" [1] => "b" [2] => "b") ) 

Как добавить следующий массив в $ content?

+1

я должен позорно признать, что я не знал (или спасшийся мой взгляд), что вы могли бы определить массивы, как это. – Kermit

+0

Каковы ваши точные требования? Вы хотите, чтобы каждый субмассив содержал 3 значения? Или только значения одной буквы? –

+1

@AarolamaBluenk он появился в PHP 5.4 – Hast

ответ

0
<?php 

$assoc = ['name','lastname','pesel']; 
$inputs = ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b']; 
$counter = 0; 
$internalcounter = 0; 
$zero = 0; 
$arrayIndex = 0; 
$content = array(); 
$content[$arrayIndex] = array(); 

while ($counter < sizeof($inputs)) 
{ 
    if ($internalcounter == sizeof($assoc)) 
    { 
     $counter++; 
     $internalcounter = 0; 

     if ($counter < sizeof($inputs)) 
      $content[++$arrayIndex] = array(); 
    } 
    else 
    { 
     array_push($content[$arrayIndex], $inputs[$counter]); 
     $counter++; 
     $internalcounter++; 
    } 
} 
var_dump($content); 
+0

ваше решение дает дополнительный пустой массив в конце. –

+0

Исправлено, спасибо. – Hast

+0

спасибо;) Это то, что я хотел – konadrian

2

Альтернативное решение:

$assoc = ['name', 'lastname', 'pesel']; 
$inputs = ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b']; 
$content = array(); 
$i = 0; 
foreach ($inputs as $key => $val) { 
    $key += 1; 
    if (($key < (sizeof($inputs)))) { 
     if (($key % (sizeof($assoc) + 1) == 0)) { 
      $content[++$i] = array(); 
     } else { 
      $content[$i][] = $val; 
     } 
    } 
} 
var_dump($content); 
+0

Я буду использовать ваш код, он выглядит лучше моего;) – konadrian

Смежные вопросы