[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Непонятости с массивом со строковыми индексами.
combovas
У меня возникло непонятная мне проблема при написании небольшой программы, которая имеет дело с небольшим одномерным массивом с символьными индексами переменных. В общем я щас ковыряю свою первую книжку по php и как раз разбираюсь с массивами. Программа выглядит так:

<?php

$paper= array
(
'Text1' => 'Бабочка',
'Text2' => 'Рыба',
'Техт3' => 'Аист',
'Техт4' => 'Лось');
$cnt = 1;
foreach($paper as $a=>$b)
{
echo "Line$cnt---------->", " $a : $b<br/>";
}

echo "END OF LINE...........<br/>";
print_r($paper);
echo"<br/><br/><br/>";
echo "Listing 2 begins<br/><br/><br/>";
//$paper= array
//(
// 'Text1' => 'Бабочка',
// 'Text2' => 'Рыба',
// 'Техт3' => 'Аист',
// 'Техт4' => 'Лось');
while (list($item,$description) = each($paper))
echo "$item,$description<br/>";
?>




На выходе я получаю следующий код
Line1----------> Text1 : Бабочка
Line1----------> Text2 : Рыба
Line1----------> Техт3 : Аист
Line1----------> Техт4 : Лось
END OF LINE...........
Array ( [Text1] => Бабочка [Text2] => Рыба [Техт3] => Аист [Техт4] => Лось )


Listing 2 begins


То есть цикл while c функциями List() и each() - последние 2 строчки кода не работает. Долго я танцевал с бубном вокруг этого кода, пока не решил объявить массив заново(в исходном коде это закомментировано ). При объявлении массива заново цикл начинает работать. В чем тут дело мне не понятно. print_r() сразу после цикла foreach() вроде показывает что после обработки массив остается самим собой, но... Объясните пожалуйста.
sergeiss
Перед циклом while() напиши
reset( $paper )

и всё должно заработать.

Проблема в том, что массив в ПХП имеет "внутренний указатель", который указывает на текущий элемент. Функция each() берет именно текущий элемент.
Вот тут почитай http://ru2.php.net/manual/ru/function.reset.php

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
combovas
Спасибо большое, все заработало. Не знал о этой тонкости...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.