2015-05-18 3 views
0

У меня есть интересная проблема, которая не возвращает ожидаемые результаты.Как исправить неправильные результаты массива

Я вытаскиваю список из 50 имен из базы данных и помещаю их в массив, который отлично работает. Затем мне нужно будет добавить первый массив имени в массив. При попытке сделать это окончательный результирующий массив заканчивается только {NAME} z, а не ожидаемыми результатами. Вот мой подарок код

$init_array = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'); 

foreach($names as $id=>$name){ 

    foreach($init_array as $ks=>$vs){ 
     $names[$id] = $name . ' ' . $vs . '<br>'; 
    } 
} 




foreach($names as $id=>$name){ 

    echo $name . '<br>'; 
} 

Мои результаты теперь показывают что-то вроде:

Arnetta z 

Arnette z 

Arnita z 

Arnold z 

Arnoldo z 

Когда на самом деле он должен показать:

Arnetta a 

Arnetta b 

Arnetta c 

И так далее. Поэтому мой вопрос заключается в том, имеет ли массив ограничение объема данных, которые он может хранить? Я на самом деле установить лимит памяти:

ini_set('memory_limit', '1024M'); 

И код оказывается правильным, чтобы добавить намеченную первый инициал из фамилии в массив имен. Неправильно ли вы разрабатываете код? Каков правильный способ настройки кода для предполагаемых результатов?

Заранее спасибо.

+0

Вы только перезапись значения в массиве имен снова и еще раз. Похоже, вы хотите объединить имя, а не переписывать его. –

+0

Итак, в конце концов, вы хотите, чтобы каждое имя в '$ names' имело вариант для каждой буквы в массиве? (боковой подсказку - сократите этот большой уродливый буквенный массив [с 'range()'] (http://php.net/manual/en/function.range.php), как в '$ init_array = range ('a', 'z'); ') –

+1

Итак, вы хотите получить строки 26 * [# номеров' $ names']? –

ответ

0

Вы перезапись значения в том же индекс массива, так что содержит последнее значение массива попробовать многомерный массив как этого

$init_array = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'); 

foreach($names as $id=>$name){ 

    foreach($init_array as $ks=>$vs){ 
     $names[$id][] = $name . ' ' . $vs . '<br>'; 
    } 
} 



print_r($names); 
-1
$count=0; 

foreach($names as $id=>$name){ 

    $names[$id] = $name . ' ' . $init_aray[$count]. '<br>'; 
    $count++; 

} 
+0

Это не имеет никакого отношения к подсчету массива и не приближается к решению проблемы. – MrTechie

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