我正在关注一个视频系列和我使用的相同代码因某些原因无法正常工作。我收到了这个错误:
警告:第8行 /Applications/XAMPP/xamppfiles/htdocs/projects/lr/core/functions/general.php中为foreach()提供的参数无效
我的general.php页面是:
<?php
function sanitize($data) {
return mysql_real_escape_string($data);
}
function output_errors($errors) {
$output = array();
foreach($errors as $error) {
echo $error, ', ';
}
}
我的login.php页面是:
<?php
include 'core/init.php';
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true|| empty($password) === true) {
$errors[] = 'You need to enter a username and/or password.';
} else if (user_exists($username) === false) {
$errors[] = 'We can\'t find that username. Have you registered?';
} else if (user_active($username) === false) {
$errors[] = 'You haven\'t activated your account! Check your email.';
} else {
$login = login($username, $password);
if ($login === false) {
$errors = 'That username/password combination is incorrect.';
} else{
$_SESSION['user_id'] = $login;
?>
<meta http-equiv="refresh" content="0;url=index.php">
<?php
exit();
}
}
}else {
$errors[] = 'No data received';
}
include 'includes/overall/overall_header.php';
output_errors($errors);
include 'includes/overall/overall_footer.php';
?>
视频集在这里:http://www.youtube.com/watch?v=-XvbXxqJ4xQ&list=ECE134D877783367C7但我得不到相同的结果。谢谢。
答案 0 :(得分:1)
在foreach()
处理之前,您可以通过一些快速检查更新general.php。 foreach()
期望传递一个数组,你看到的错误表明它是一个非数组或空成员数组。
is_array()
函数验证$ errors实际上是一个数组,count()
比较确保至少有一个数组成员可以使用foreach()
进行循环。
<?php
function sanitize($data) {
return mysql_real_escape_string($data);
}
function output_errors($errors) {
$output = array();
if ( is_array( $errors) && count( $errors ) > 0 ){
foreach($errors as $error) {
echo $error, ', ';
}
}
}
答案 1 :(得分:1)
您应该在分支上方正确初始化$errors
变量:
<?php
include 'core/init.php';
$errors = array(); // <-- added
if (empty($_POST) === false) {
如果没有这个,$errors
将null
隐式传递给您的函数(并引发通知),null
显然不是数组。