Undefined offset: 3

Sirius

PHP+MySQL=LOVE
Undefined offset: 3

$wg=array();
$wg[0] = "Mail";
$wg[1] = "ICQ";
$wg[2] = "AIM";

$p=0;
while($wg[$p]) { // 168 line
.........
}

даёт ошибку:
Notice: Undefined offset: 3 in D:\www\index.php on line 168

Менять php.ini не предлагать!
Какой правильный синтаксис?
 

Crazy

Developer
Sirius, ЧЕГО ты хочешь добиться от синтаксиса? Чтобы в $p тройка не присваивалась? :)
 

tony2001

TeaM PHPClub
Ромик, why ?
ему нужно пройтись по всему массиву.
имхо удобнее форича для этого ничего не придумали еще.
 

RomikChef

Guest
Крейзи, он хочет, чтобы нотайса не было :)
Сириус, а дефайнить массив имхо, так так красивее и быстрее
$wg=array(
"Mail",
"ICQ",
"AIM"
);
 

RomikChef

Guest
вообще-то, вайл удобнее и быстрее всего :)
а фор быстрее форича.
 

tony2001

TeaM PHPClub
согласен, но в случае с индексами идущими не подряд - мне удобнее форич.
 

Sirius

PHP+MySQL=LOVE
Ну да - окончательная цель чтобы не было предупреждений, так как не некоторых хостингах:
error_reporting = E_ALL

Так что быстрее - раз уж менять весь синтаксис скрипта, так с музыкой:)
 

Sirius

PHP+MySQL=LOVE
нет - у меня подряд - это типа языковые данные - в другом файле по русски и т.д.
 

RomikChef

Guest
while. в нем не надо считать количество илиментов в массиве.
а может быть, for...
померяй, и нам скажи!

а как будет AIM по-русски?
 

Sirius

PHP+MySQL=LOVE
Не переводится :)))

while не может подойти!
Он живёт пока живут элементы массива, а когда умирает, то рожает эту самую ошибку!

Можа функцию написать свою типа while из for?
Не помогете? Не соображу как написать свою функцию цикла
 

confguru

ExAdmin
Команда форума
Если надо обойти массив то так :)))

PHP:
reset ($wg);
while (list ($key, $val) = each ($wg)) {
    echo "$key => $val<br />\n";
}
 

RomikChef

Guest
лист - самый медленный из вариантов.

Сириус, ты самый первый ответ на свой вопрос прочел?

А вот смысла написания своей функции из for я совершенно не понял.
Не объяснишь???
 

Sirius

PHP+MySQL=LOVE
А похожий на Ромика первый вариант чем плох? - он прекрасно работает:
PHP:
while(isset($wg[$p])) {
...
$p++;
}
 

tony2001

TeaM PHPClub
while не может подойти!
Он живёт пока живут элементы массива, а когда умирает, то рожает эту самую ошибку!
Можа функцию написать свою типа while из for?
А похожий на Ромика первый вариант чем плох? - он прекрасно работает:
это один человек писал ?
или я болен ?
 

RomikChef

Guest
вот и мне интересно - чем он плох, если ты функцию собираешься писать?
а чем тебе мешает инкремент сразу?
 

Sirius

PHP+MySQL=LOVE
Да - прочёл как видишь - если серьёзных возражений нет, буду его юзать - я его не использовал так как ты написал, потому что:
PHP:
while(isset($wg[$p++])) { 
... 
echo $wg[$p]; // Здесь даёт ошибку
$p++; 
}
Тони - я чо-то сморозил?
 

RomikChef

Guest
да, действительно, я не подумал.
тогда можно писать do {} while () :)
 
Сверху