Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с массивом, берётся не существующий индех 
:(
    Опции темы
WhiteSpirit
Дата 27.11.2005, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



Есть файл data.ini:
Код

...
[article]
theme=Первый, Второй, Третий, Четвертый
...


есть класс для работы с этим файлом c_ini.php:
Код

...
      var $ini;
      function ini() //Конструктор
      {
            $this->ini=parse_ini_file($_SERVER['DOCUMENT_ROOT']."/data.ini", true) or die ("Ошибка");
      }
...
      function get_theme_article($i)
      {
               $arr=explode(", ", $this->ini['article']['theme']);
               return $arr[$i];
      }
...


Реализация в файле index.php
Код

...
while($arr=$data->get_theme_article($c))
{
    echo "&nbsp;&nbsp;&nbsp;<a href=\"".$data->get_title_adress(1)."? id=0&theme=".++$c."\">".$arr."</a><br>"
}
... 


В итоге показывается ошибка:
Notice: Undefined offset: 4 in ...\class\c_ini.php on line 49
49-я строка (файл c_ini.php):
Код

...
return $arr[$i];
...


Подскажите пожалуйста откуда берется 4-й индекс


--------------------
To beer or no to beer
PM MAIL   Вверх
Mal Hack
Дата 27.11.2005, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(WhiteSpirit @ 27.11.2005, 20:42)
theme=Первый, Второй, Третий, Четвертый

У тебя ошибочный синтаксис файла. Литералы должны быть в ковычках.

http://ru.php.net/parse_ini_file

Цитата
Структура ini-файла похожа на структуру php.ini.

Константы также могут быть обработаны в ini-файле, так что если вы объявите константу в виде значения для ini-файла до вызова parse_ini_file(), она (константа) будет правильно обработана. Таким образом обрабатываются только значения. Например:

Пример 1. Содержимое sample.ini


Код

; Это пример файла настроек
; Комментарии начинаются с ';', как в php.ini

[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = /usr/local/bin
URL = "http://www.example.com/~username"


Это сообщение отредактировал(а) Mal Hack - 27.11.2005, 20:54
PM ICQ   Вверх
WhiteSpirit
Дата 27.11.2005, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



Попробую щас проверить, но дело в том что все значения строки ini выводятся довольно исправно, а после последнего кажет ошибку
Добавлено @ 21:07
Сделал:
Код

theme="Первый, Второй, Третий, Четвертый"


Ошибка с 4-м индексом осталась
--------------------
To beer or no to beer
PM MAIL   Вверх
-=Ustas=-
Дата 27.11.2005, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Сразу скажу, что в твой код не въезжал, а сразу обратил внимание на префиксный инкремент... Может там нужно использовать постфиксный, $c++ ?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Darhazer
Дата 27.11.2005, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 7
Всего: 29



Это из за цикла
Код

while($arr=$data->get_theme_article($c))

Он выполняеться пока get_theme_article не вернет пустой масив, т.е. когда индекс $c не существуеть. Так, как ты написал, нельзя не визвать get_theme_article с несуществуещем индексом (4), но можеш сделать так:

Код

function get_theme_article($i)
      {
               $arr=explode(", ", $this->ini['article']['theme']);
               return ( $i < count($arr) )? $arr[$i] : false;
      }


Это сообщение отредактировал(а) Darhazer - 27.11.2005, 22:20


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
WhiteSpirit
Дата 27.11.2005, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 1.6.2005
Где: Челябинск

Репутация: нет
Всего: нет



-=Ustas=-
Постфиксный не потянет, поскольку увеличение должно пройти до вывода переменной
Добавлено @ 22:53
Darhazer
Спасибо за подробное разъяснение. Проблема решена.
--------------------
To beer or no to beer
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.