Отображение массива массивов в поле зрения из контроллера codeigniter

Я пытаюсь отобразить массив или массивы на мой взгляд, и у меня возникают трудности с тем, как это сделать, поэтому любая помощь будет очень признательна :)

Мой массив массивов в модели:

$user = array();
...
$user[$id] = array(
            'id' => $userId[$id],
            'match' => $percentage
        );
return array('userInfo' => $user);

который хранит информацию от некоторых пользователей. Я передаю его контроллеру, а оттуда в представление, где я хочу отображать информацию в массиве $user. В массиве может быть один или несколько пользователей.

вот мой контроллер:

$result = $this->model->getUserDetails();

$this->load->view('view', array('user' => $result);

в представлении я хочу напечатать информацию, но я не знаю, как это сделать, так как я никогда не работал с массивами массивов, и я немного запутался.

вот вид:

<?php foreach ($user['userInfo'] as $index => $value) {
    echo $value[$index]['id'].' '.$value[$index]['match'];
?>

если я сделаю это так

or

echo $value['id'];

or

echo $index['id'];

представление ничего не отображает или ему не нравится индекс "id"

это то, что у меня есть для

var_dump($result); 

array(1) { ["result"]=> array(1) { [0]=> array(11) { 
["id"]=> string(2) "55" 
["fname"]=> string(6) "Dan" ["lname"]=> string(5) "Re" 
["email"]=> string(18) "[email protected]" ["username"]=> string(6) "dan"    
["gender"]=> string(4) "Male" ["DOB"]=> string(10) "1990-07-13" 
["profile_image"]=> string(8) "dan.jpg" 
["short_des"]=> string(147) "I love singing and playing music" 
["pwd"]=> string(4) "dan" ["confirm_pwd"]=> string(4) "dan" } } } 

это означает, что должен отображаться один пользователь

Пожалуйста, помогите, так как я очень смущен.

Спасибо большое.


person Nynaeve    schedule 03.04.2016    source источник
comment
Добавьте содержимое var_dump($result); к своему вопросу.   -  person Keeleon    schedule 03.04.2016
comment
Я обновил вопрос с результатом для var_dump($result);   -  person Nynaeve    schedule 04.04.2016


Ответы (1)


Проблема, с которой вы столкнулись, заключается в том, что вы ожидаете, что $this->model->getUserDetails() вернет один массив с информацией о пользователях. На самом деле он возвращает интересующий вас массив, вложенный в несколько других массивов.

Измените эту строку:

$this->load->view('view', array('user' => $result);

To:

$this->load->view('view', array('user' => $result['result'][0]);

И я верю, что ваша проблема будет решена.

Хотя эта линия выглядит не так красиво! Если вы намеревались, чтобы ваша функция getUserDetails() возвращала только один массив об одном пользователе (предположительно, текущем, вошедшем в систему), я бы рекомендовал изменить возвращаемое значение этой функции.

person Keeleon    schedule 03.04.2016
comment
дело в том, что массив $result может содержать одного или многих пользователей, в зависимости от результата функции в модели, поэтому я хочу, чтобы он возвращал столько, сколько возвращает функция, а не только один; будет ли новая линия работать со многими пользователями? - person Nynaeve; 04.04.2016
comment
@Nynaev Тогда проблема будет заключаться в том, как бы вы определили работу. Строка будет скомпилирована, и страница отобразится, если вы измените ее на это. Проблема становится [0] в строке выше. Если вы оставите это [0] жестко закодированным, $user всегда будет той строкой, которая была возвращена первой из запроса в функции getUserDetails(). - person Keeleon; 04.04.2016