【发布时间】:2019-01-14 08:15:12
【问题描述】:
我在 codeigniter 中收到 foreach 循环错误,它工作正常,但是一旦我将项目移动到新主机,我就会收到循环错误。两台服务器都使用 PHP 7.2
这是第一个错误:
Message: array_slice() expects parameter 1 to be array, null given
这是第二个错误:
Message: Invalid argument supplied for foreach()
回溯说错误在控制器中,我检查了很多次,尝试了很多方法,但还是一样。
使用is_array PHP 函数不会有帮助,因为它只会隐藏错误消息,但函数不会像以前那样工作。
控制器:
public function login(){
$data['title'] = 'Sign In';
$this->form_validation->set_rules('email', 'Email', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if($this->form_validation->run() === FALSE){
$this->load->view('templates/header', $data);
$this->load->view('users/login', $data);
$this->load->view('templates/footer');
} else {
// Get username
$username = $this->input->post('email');
// Get and encrypt the password
$password = $this->input->post('password');
// Login user
$user_id = $this->user_model->login($username, $password);
if($user_id){
// Create session
$user_data = array(
'id' => $user_id,
'email' => $username,
'logged_in' => true
);
$this->session->set_userdata($user_data);
// Set message
$this->session->set_flashdata('user_loggedin', 'Login Success');
redirect('users/account');
} else {
// Set message
$this->session->set_flashdata('login_failed', 'Login Faild');
redirect('users/login');
}
}
}
public function account($id = NULL){
if(!$this->session->userdata('logged_in')){
redirect('users/login');
}
$data['users'] = $this->user_model->get_users($this->session->userdata('id'));
$data['title'] = 'Account';
$this->load->view('templates/user_header', $data);
$this->load->view('users/account', $data);
$this->load->view('templates/user_footer');
}
循环代码:
<?php foreach (array_slice($users, 0, 1) as $user): ?>
<div><p><?php echo $user['first_name'] ?></p></div>
<?php endforeach; ?>
型号:
public function get_users($id){
$this->db->join('user_details', 'user_details.user_details_id = users.id');
$this->db->join('user_orders', 'user_orders.user_id = users.id');
$query = $this->db->get_where('users', array('id' => $id));
return $query->row_array();
}
【问题讨论】:
-
也显示你的 get_users 方法
-
你怎么知道使用 is_array PHP 函数不会有帮助,你确定
foreach()中的$users是array()。而且,is_array()不会隐藏错误,它会在执行和出错之前阻止foreach()语句 -
@pradeep 我添加了 get_users 方法
-
@Sinto 我确信 $users,
is_array阻止了foreach()声明,这就是为什么添加它不会有帮助。因为如果foreach()被阻止,我该如何在屏幕上打印数据 -
好的,我在那里看到了查询。您在那里不需要 foreach,因为查询中只有记录。避免使用 foreach 并尝试 echo $users['first_name'];
标签: php codeigniter loops foreach