Извините за фанки-титул, у меня возникли проблемы с появлением одного. Во-первых, мне удалось решить мою проблему (после разрыва моего кода), но я понятия не имею, ПОЧЕМУ мое решение работает, и я стараюсь рассматривать это как опыт обучения.Ошибка индекса PHP-массива
У меня есть класс, который собирает информацию с db. Этот класс отслеживает значение индекса, так что вызывающая функция может захватывать результаты по одному за раз. Так что мой код класса первоначально содержал ...
protected $index = NULL;
protected $array = array(stuff);
public function next_item()
{
if($this->index == NULL)
{//first time called
$this->index = 0;
}
else
{
$this->index++;
}
if($this->index < sizeof($this->array))
{
return TRUE;
}
return FALSE;
}
public function get_result()
{
return $this->array[$this->index];
}
И вызываемая функция есть что-то похожее на
while($myclass->next_item()){
echo $myclass->get_result();
}
Это все намного сложнее, чем это, конечно, но это код задачи (и вы получаете идею). Этот код вызвал бесконечный цикл (или внешний вид одного) в моем проекте. Я исправил свою проблему, инициализируя $ index до -1 и удаляя условную проверку для null. Так что это сейчас ...
protected $index = -1;
public function next_item()
{
$this->index++;
if($this->index < sizeof($this->array))
{
return TRUE;
}
return FALSE;
}
Мой вопрос: ПОЧЕМУ это работало? Индекс никогда не упоминался в массиве, пока он был NULL, я проверил. Это всегда происходило после того, как была вызвана условная проверка для NULL и произошло присвоение 0.
Я действительно ценю ваше время, заранее. Просто пытаюсь превратить это в опыт обучения, и лучше, если я пойму, почему это сработало, а не только так.
Прошу прощения, если на этот вопрос ответит где-то в другом месте, я не мог понять, как обозначить мой вопрос (как вы можете видеть), тем более, что у него есть успешный поиск предыдущего ответа на него.
веселит, -Давид
У вас может быть 'if (++ $ this-> index array))', чтобы сохранить строку, она увеличит ее для вас. –
DanRedux