2016-04-03 5 views
1

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

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

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

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

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

$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']; 
?> 

если я сделать это таким образом

или

echo $value['id']; 

или

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" } } } 

означает, что есть один пользователь, который будет отображаться

Pls сделать помощь как я очень смущен.

спасибо.

+1

Добавить содержимое 'var_dump ($ result);' на ваш вопрос. – Keeleon

+1

Я обновил вопрос с результатом для 'var_dump ($ result);' – Nynaeve

ответ

1

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

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

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

To:

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

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

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

+0

Дело в том, что массив $ result может содержать одного или многих пользователей в зависимости от результата функции в модели, поэтому я хочу, чтобы это возвращает столько, сколько возвращает функция, а не только одна; будет ли новая линия работать со многими пользователями? – Nynaeve

+1

@Nynaeve Проблема тогда в том, как бы вы определили «работу».«Строка будет компилироваться, и страница будет отображаться, если вы измените ее на нее. Проблема становится' [0] 'в строке выше. Если вы храните этот' [0] 'жестко закодированный,' $ user' всегда будет любая строка была возвращена сначала из запроса в функции 'getUserDetails()'. – Keeleon

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