У меня есть проблема с объявляя свойства что является ассоциативным массивом внутри PHP класса.Объявление ассоциативного массива внутри PHP класса
class Friends {
private $db;
public $friendRequest;
public $addedUser;
public $frName;
function __construct(){
$this->friendRequest = array();
$this->addedUser = array();
$this->frName = array();
}
public function friendInfo($getId) {
$this->db = new DataBase();
$this->friendRequest = $this->db->frFrom($getId);
foreach ($this->friendRequest['userId'] as $key => $friendId) {
$this->addedUser = $this->db->frFrom($friendId);
$this->frName['name'] = $this->addedUser[0]['nickName'] ;
$this->frName['id'] = $this->friendRequest['id'][$key] ;
$this->frName['friendId'] = $this->friendRequest['userId'][$key];
}
return $this->frName;
}
}
Я получаю сообщение об ошибке: идентификатора пользователя переменной неопределенных. Я попытался определить assoitive массива, добавив еще один конструктор, такие как
function __construct($this->friendRequest){
$this->friendRequest['userId'] = array();
}
Я все еще получаю сообщение об ошибке для определения не USERID переменных. Я также должен объявить другие ассоциативные массивы, но если я выясню проблему с массивом friendRequest ['user_id'], я должен уметь исправлять другие. Может кто-нибудь помочь мне в этом?
Я изначально написал этот код без объявления переменных во время работы над ним на моем веб-сервере. Я был ошибок не получал и он работал совершенно нормально.
Но когда я решил его довести мое заявление в мою локальной машины, которая работает сервера XAMPP, я начал видеть ошибки. Поэтому я понял, что я должен decalere в свойства просто нравится, как я объявил:
private $db;
, а затем с помощью $ this-> вызова свойства, которые в данном случае они являются ассоциативными массивами.
Исходный код такой же, как здесь, и он не дал мне никакой ошибки, когда я русал на веб-сервере.
class Friends {
private $db;
public function friendInfo($getId) {
$this->db = new DataBase();
$friendRequest = array();
$friendRequest = $this->db->frFrom($getId);
foreach ($friendRequest['userId'] as $key => $friendId) {
$addedUser = $this->db->frFrom($friendId);
$frName['name'] = $addedUser[0]['nickName'] ;
$frName['id'] = $friendRequest['id'][$key] ;
$frName['friendId'] = $friendRequest['userId'][$key];
}
return $frName;
}
}
Когда вы пишете '$ this-> friendRequest = $ this-> db-> frFrom ($ getId);', это то, что возвращает массив, где существует 'userId'? – aurbano
$ this-> db-> frFrom ($ getId) возвращает многомерный массив из вызова базы данных. внутри этого массива есть еще два массива ['userId'] и ['id']. –
Возможно, это проблема, вы должны сделать var_dump после того, как она будет возвращена из базы данных, чтобы увидеть структуру массива, хотя (как @dldnh предлагает в своем ответе) – aurbano