Я пытаюсь отрисовать значения из запроса MySQL и вставить их в многомерный массив. Я могу создать массив и вставить все значения из запроса в массив.
проблема возникает, когда значение не существует в базе данных, и я пытаюсь повторить настройку массива. Я получаю ошибку followig:
Undefined offset: 2
может быть проще, если я покажу вам, что хочу
мои занятия содержит множество функций, которые отображают динамически установленные значения
т.е.
public $answer=array();
public function questionOne()
{
return $this->answers[$row['period_id']]['question_one'];
}
вышеуказанные значения устанавливаются из рендеринга значений из запроса ниже:
while ($row = mysqli_fetch_array ($results, MYSQLI_ASSOC))
{
$this->answers[$row['period_id']][] = $row['question_one'];
$this->answers[$row['period_id']][] = $row['question_two'];
}
Эта функция работает, пока значения существуют в базе данных. Итак, мне нужен способ инициализации массива.
я пытался сделать это;
$this->answers = $this->theResponseArray();public function theResponseArray()
{
return $array = array (
1 => array (
0 => null,
1 => null,
),
2 => array (
0 => null,
1 => null,
),
3 => array (
0 => "",
1 => "",
),
3 => array (
0 => "",
1 => "",
)
);
}
но все, что произошло, это то, что он рендерил весь массив как ноль и не позволял помещать новые значения в массив.
ОБНОВИТЬ
я разместил весь код на скрипке:
Вы можете проверить, существует ли значение в массиве (по isset), а затем сделать что-то с ним, например:
public function questionOne()
{
if (isset($this->answers[$row['period_id']]['question_one']) {
return $this->answers[$row['period_id']]['question_one'];
} else {
return 'no question'; //or '', or whatever
}
}
Редактировать:
Единственное, что отличается от вашей функции getQuestionWeekXyz — это количество недель, поэтому вы должны поместить их в одном месте. Затем вы можете использовать foreach для просмотра вопросов в вашей недельной таблице:
public function getQuestionByWeek($weekNo) {
$result = '';
//if there are no questions for this week
if (!isset($this->answers[$weekNo]) || !is_array(this->answers[$weekNo])) {
return $result;
}
$result .= "<form action='index.php?view=$this->postDestination' method='post' >";
foreach ($this->answers[$weekNo] as $questionNumber => $questionText) {
$questionNumber++;
$result .= "<p>
Question Week {$this->numberToString($weekNo)}: <textarea name='cycleWeekQuestion{$this->numberToString($questionNumber)}' cols='$this->col' rows='$this->row' style='font-family: Tahoma; font-size: 12pt' />{$questionText}</textarea>
</P>";
}
$result .= "<input type='hidden' name='cycleWeekId' value='{$weekNo}'>
<span class='hideSubmit'><input type='submit' name='submit' size='20' style='font-family: Tahoma; width: 200px; height: 25pt; font-size: 14pt' value='Submit'></span>
</form>";
return $result;
}
public function numberToString($number)
{
switch($number) {
case 1: return 'One';
case 2: return 'Two';
case 3: return 'Three';
case 4: return 'Four';
}
return $number;
}
public function questionsWeekOne()
{
return $this->getQuestionByWeek(1);
}
public function QuestionsWeekTwo()
{
return $this->getQuestionByWeek(2);
}
public function QuestionsWeekThree()
{
return $this->getQuestionByWeek(3);
}
public function QuestionsWeekFour()
{
return $this->getQuestionByWeek(4);
}
Других решений пока нет …