Как сделать многомерный массив в цикле while? - PullRequest
0 голосов
/ 30 июня 2011

Я застрял с этой простой проблемой в php:

$words = array();
while ($allrow = mysqli_fetch_array($all))
{       
    $words = "".utf8_encode($allrow["eng"])."" => "".$allrow["id"]."";                  
}

foreach ($words[] as $key => $word) {

Я хочу иметь массив с некоторыми словами и его идентификатором.В цикле foreach мне нужно знать, какой идентификатор имеет каждое слово.

Ответы [ 3 ]

2 голосов
/ 30 июня 2011

Ваш синтаксис построения массива выключен, попробуйте это:

// array key is the id, swap if needed, but I assume the ids are unique
$words[$allrow["id"]] = utf8_encode($allrow["eng"]);

Каждый раз, когда вы говорите $words = $anything, вы перезаписываете последнюю итерацию.

Это должно было вызвать ошибку разбора:

."" => "".

Не уверен, как это ускользнуло от ваших испытаний.Нет необходимости в пустых строках "".

1 голос
/ 30 июня 2011

Внутри цикла foreach добавьте каждую запись в массив.

$words[utf8_encode($allrow["eng"])] = $allrow["id"];

если вы на самом деле хотите использовать идентификатор в качестве ключа, что более вероятно, вы отменяете присвоение:

$words[$allrow["id"]] = utf8_encode($allrow["eng"]);

Кроме того, вы не должны повторять, используя $words[]. Это не имеет смысла. Используйте
foreach($words as $key => $value)

Поскольку присвоение значений массива с помощью [] и итерация массивов являются основными понятиями, вам следует изучить PHP-массивы , прежде чем пытаться их использовать.

0 голосов
/ 30 июня 2011
$words[$allrow["id"]] = utf8_encode($allrow["eng"]);

и затем в цикле foreach используйте foreach ($words as $key => $word) {

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...