2

メンバーIDをキーとして行の結果セットからオブジェクトの連想配列を作成しようとしていますが、エラーが発生します。

addATravelog()は、UserLogsAndSOS()クラスの関数であり、そのオブジェクトを配列に入れたいと思っています。

これが私が試したことです:

class UserArraySet {

private $arrayOfUsers = array();    

function createArrayForTravelogs($result) {
    While($row = $result->next()) {
        if(array_key_exists($row['id'], $this->arrayOfUsers)) {
            $this->arrayOfUsers[$row['id']] = new UserLogsAndSOS();
        }
    $this->arrayOfUsers[$row['id']]->addATravelog($row['title'], $row['blog']); //line     72                                           
    }
}
}

オブジェクトからcreateArrayForTravelogs()を呼び出すと、次のエラーが発生しました。次のエラーが発生しました。

Notice: Undefined index: 1 in C:\xampp\htdocs\site\classes\userprofile.php on line 72

Fatal error: Call to a member function addATravelog() on a non-object in C:\xampp\htdocs\site\classes\userprofile.php on line 72

誰かがこれを達成する方法を教えてもらえますか、私はこのようなものが欲しいです:

Array (

 [1] => objectUserLogsAndSOS1

 [5] => objectUserLogsAndSOS2
 ....
)

ここで、keyは$rowのメンバーIDです。また、キーが存在するかどうかを確認してから、その特定のオブジェクトの関数を呼び出してそのメンバーにデータを追加する必要があります。存在しない場合は、オブジェクトを作成してから、その特定のオブジェクトの関数を呼び出してそのメンバーにデータを追加します。

ありがとう

4

3 に答える 3

2

エラーメッセージを読んでください。すでにエントリがある場合にのみUserLogsAndSOSを作成します。それ以外の場合は、nullでaddATravelogを呼び出します。多分あなたは「!」を忘れました あなたのif節で?

于 2012-09-05T13:28:59.030 に答える
1

配列は空のままだからです。

UserLogsAndSOSに指定されたIDを持つ要素がすでに存在する場合にのみ、新しい要素を作成しますarrayOfUsers。あなたがおそらく望んでいたものの正反対。

!結果を逆にするためのが欠落している可能性がありますarray_key_exist

于 2012-09-05T13:31:52.243 に答える
0
if(!array_key_exists($row['id'], $this->arrayOfUsers)) {
   $this->arrayOfUsers[$row['id']] = new UserLogsAndSOS();
}

あなたが逃したと'!' これがエラーの原因だと思います

于 2012-09-05T13:30:53.880 に答える