2012-03-18 3 views
1

У меня есть проблема с объявляя свойства что является ассоциативным массивом внутри 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; 
} 

} 
+0

Когда вы пишете '$ this-> friendRequest = $ this-> db-> frFrom ($ getId);', это то, что возвращает массив, где существует 'userId'? – aurbano

+0

$ this-> db-> frFrom ($ getId) возвращает многомерный массив из вызова базы данных. внутри этого массива есть еще два массива ['userId'] и ['id']. –

+0

Возможно, это проблема, вы должны сделать var_dump после того, как она будет возвращена из базы данных, чтобы увидеть структуру массива, хотя (как @dldnh предлагает в своем ответе) – aurbano

ответ

2

$this->friendRequest похоже, выходит из базы данных. если вы dump_var($this->friendRequest), вы сможете увидеть, что это за значение.

+0

У меня нет проблем с возвратом массивов из базы данных. Проблема в том, что я должен объявить массивы 'userId' и 'id' внутри массива friendRequest. –

+0

Какие ключи в массиве выходят из базы данных? – dldnh

+0

, если '$ this-> friendRequest' не имеет ключа' userId', когда он выходит из базы данных, вы не можете ссылаться на него с помощью этого ключа. – dldnh

Смежные вопросы