2017-01-14 3 views
1

Я использую CodeIgniter Framework.Actually, я пытаюсь отобразить массив в зрения .Но это показывает некоторые error.I've проверили мой код, но до сих пор не чтобы найти ошибку. Любая помощь будет высоко оценена.Нелегальная строка смещения (PHP Warning)

модели/users_model.php

class Users_model extends CI_Model{ 

      public function getUsers(){ 
       return array(
         'first' => 'Farhan Khan', 
         'second' => 'Abdul Wali', 
         'third' => 'Shahzaib Kamal' 
         ); 
      } 

     } 

контроллер/users.php

class Users extends CI_Controller{ 

     public function index(){ 
      $this->load->model('Users_model'); 
      $data['users'] = $this->Users_model->getUsers(); 

      $this->load->view('users_list', $data); 
     } 

    } 

просмотров/users_list.php

<!DOCTYPE html> 
<html> 
<head> 
    <title>Users List</title> 
</head> 
<body> 
    <?php 
     foreach ($users as $user) { 
      echo $user['first']; 
     } 
    ?> 
</body> 
</html> 

Ошибки я получаю:

PHP-ошибка была обнаружена

Серьезность: Предупреждение

Сообщение: Illegal строки Смещения 'первой'

+1

Пробовал ли вы любой из ответов, не забудьте принять тот, который вам помог. – user4419336

ответ

0

Попробуйте, как это ..

<!DOCTYPE html> 
<html> 
<head> 
    <title>Users List</title> 
</head> 
<body> 
    <?php 
     foreach ($users as $user) { 
      echo $user."<br/>"; 
     } 
    ?> 
</body> 
</html> 

ИЛИ

<!DOCTYPE html> 
    <html> 
    <head> 
     <title>Users List</title> 
    </head> 
    <body> 
     <?php 
      foreach ($users as $key=>$value) { 
       echo $key."=>".$value."<br/>"; 
      } 
     ?> 
    </body> 
    </html> 
0

У вас есть только один одномерный array возвращенной модели. Поэтому, когда вы делаете цикл foreach, вы на самом деле выполняете итерацию, и вы получаете элементы этого массива.

Вы можете подтвердить это, изменив вид.

<?php 
     foreach ($users as $user) { 
      echo $user."<br/>"; 
     } 

    //or you can simply do a var_dump($users); 
    ?> 

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

public function getUsers(){ 
       $users = []; 
       $users[] = array(
         'first' => 'Farhan Khan', 
         'second' => 'Abdul Wali', 
         'third' => 'Shahzaib Kamal' 
         ); 
       return $users; 
      } 
+0

Отлично, не могли бы вы рассказать мне, какие у вас сомнения? – Fawzan

+0

На самом деле, я не мог понять, почему вы использовали «$ users [] = array (...» вместо «return array (...» –

+0

Предполагаю, что вы хотите вернуть нескольких пользователей, но скорее вернетесь только к одному ' Если вы хотите вернуть нескольким пользователям, что вам нужен 2D-массив. Это массив, если пользователи. Именно поэтому я сначала создал массив 'users', а затем добавил пользователей к нему. – Fawzan

0

Вы можете попробовать это так

Помните с CodeIgniter первой буквой класса и имя файла только заглавные буквы как объяснено here

Модель: User_model.php имени файла

public function getUsers() { 
    return $this->db->get('users')->result_array(); 
} 

Контролер Пользователи.PHP файла

public function __construct() { 
    parent::__construct(); 
    $this->load->model('user_model'); // User_model.php 
} 

public function index() { 
    $data['users'] = $this->user_model->getUsers(); 
    $this->load->view('users', $data); 
} 

Посмотреть

foreach ($users as $user) { 
    echo $user['first']; // first will be a column name. 
} 
0

вы делаете немножко ошибку -

ваш массив -

$arr = array(
    'first' => 'Farhan Khan', 
    'second' => 'Abdul Wali', 
    'third' => 'Shahzaib Kamal' 
    ); 

, когда вы будете печатать этот массив, используя который -

echo "<pre>"; 
print_r($arr); 

тогда вывод будет такой -

Array 
(
    [first] => Farhan Khan 
    [second] => Abdul Wali 
    [third] => Shahzaib Kamal 
) 

и внутри Foreach его массив печати с индексацией как 0,1,2,3 ... но здесь не какой-либо индекс внутри массива Вот почему давая эту ошибку.

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