PHP illegal offset type Fehler

Immer eine illegal offset type Fehler auf dieser Zeile in der zweiten foreach-Schleife.

$userlist[$user]->addPeriod($period);

Einige änderungen vorgenommen, die aus vergangenen info gegeben, in den vergangenen threads und dies ist die neue version des Codes. Es ist auch eine Warnung, aber ich denke, dass könnte gelöst werden, wenn der Fehler behoben ist:

Rufen Sie an eine member-Funktion addPeriod() on a non-object

$periods_arr = array(1, 2, 3, 4, 5);
$subPeriods_arr = array(1, 2);
$questionslist = array("q_1_1", "q_1_2", "q_2_1", "q_2_2", "q_3_1", "q_4_1", "q_5_1");

class User {
    public $userId;
    public $periods = array();

    public function __construct($number)
    {
        $this->userId = $number;
    }

    public function addPeriod($pno)
    {
        $this->periods[] = new Period($pno);
    }
}

class Period {
    public $periodNo;
    public $subPeriods = array();

    public function __construct($number)
    {
        $this->periodNo = $number;
    }

    public function addSubPeriod($spno)
    {
        $this->subPeriods[] = new SubPeriod($spno);
    }
}

class SubPeriod {
    public $SubPeriodNo;
    public $answers = array();

    public function __construct($number)
    {
        $this->SubPeriodNo = $number;
    }

    public function addAnswer($answer)
    {
        $this->answers[] = new Question($answer);
    }
}

class Question {
    public $answer;

    public function __construct($ans)
    {
        $this->answer = $ans;
    }

    public function getAnswer()
    {
        echo $answer;   
    }
}        

$userlist = array();

$sql = 'SELECT user_ref FROM _survey_1_as GROUP BY user_ref ORDER BY user_ref ASC';
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result))
{
    $userlist[] = new User($row['user_ref']);
}

foreach ($userlist as &$user)
{
    foreach ($periods_arr as &$period)
    {
        $userlist[$user]->addPeriod($period);

        foreach ($subPeriods_arr as &$subPeriod)
        {

            $userlist[$user]->periods[$period]->addSubPeriod($subPeriod);

            foreach($questionslist as &$aquestion)
            {
                $sql = 'SELECT ' . $aquestion . ' FROM _survey_1_as WHERE user_ref = ' .
                     $user . ' AND answer_sub_period = ' . $subPeriod . ' AND answer_period = ' . $period .''; 

                $result = mysql_query($sql);

                while ($row = mysql_fetch_array($result))
                {
                    $userlist[$user]->periods[$period]->subPeriods[$subPeriod]->addAnswer($row[$questionNumber]);
                }
            }
        }
    }   
}

$userlist[3]->periods[3]->subPeriods[1]->getAnswer();
  • Sie können dieses Problem haben: bugs.php.net/bug.php?id=29992 Es ist am besten zum entfernen von verweisen und die Nutzung foreach ($periods_arr as $period_key => $period)
  • bedeutet das hinzufügen einer weiteren dimension zu meinem arrays(aller)?
  • Ich zählte 5 geschachtelte Schleife!Sollten Sie umgestalten dieser code-block
  • yeh prob in Aussehen sollte, dass ich Ihre erste :p
InformationsquelleAutor | 2014-05-29
Schreibe einen Kommentar