非法字符串偏移量(PHP警告)

时间:2017-01-14 04:31:04

标签: php codeigniter

我正在使用Codeigniter Framework。实际上,我试图在视图中显示数组。但是它显示了一些错误。我&# 39;我检查了我的代码,但仍然无法找到错误。任何帮助将受到高度赞赏。

模型/ 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错误

     

严重性:警告

     

消息:非法字符串偏移&#39;首先&#39;

4 个答案:

答案 0 :(得分:0)

试试这样..

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

OR

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

答案 1 :(得分: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;
            }

答案 2 :(得分:0)

你可以这样试试

  

请记住CodeIgniter 类的第一个字母和文件名仅大写,如here所述

型号: User_model.php 文件名

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

控制器 Users.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.
}

答案 3 :(得分: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的打印数组......但是这里不是数组中的任何索引,这就是为什么要给出这个错误..