Инициализировать многомерный массив

Я пытаюсь отрисовать значения из запроса 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 => "",
)
);
}

но все, что произошло, это то, что он рендерил весь массив как ноль и не позволял помещать новые значения в массив.

ОБНОВИТЬ

я разместил весь код на скрипке:

код

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);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]