从 PHP 中包含的函数文件向数组添加值
Adding values to an array from an included functions file in PHP
我是编程新手 PHP,我需要帮助解决我确定是一个简单的问题。我正在尝试将值添加到我的表单页面中称为错误的数组,这样我可以稍后回显它以进行验证,尽管我似乎无法从我包含的函数文件中向数组添加任何内容。
我需要函数<?php require_once("functions.php") ?>
然后我创建数组<?php $errors = array(); ?>
然后我从 includes <?php minLength($test, 20); ?>
中调用函数
函数在这里
function minLength($input, $min) {
if (strlen($input) <= $min) {
return $errors[] = "Is that your real name? No its not.";
} else {
return $errors[] = "";
}
}
然后像这样在结尾回显它们
<?php
if (isset($errors)) {
foreach($errors as $error) {
echo "<li>{$error}</li><br />";
}
} else {
echo "<p>No errors found </p>";
}
?>
但是最后没有回音,在此先感谢您的帮助
minLength()
函数 returns $errors
如您所定义。但是,您的代码中没有 $errors
从该函数接受 return。
示例代码为:
<?php
require_once("functions.php");
$errors = array();
$errors = minLength($test, 20);
if (count($errors) > 0) {
foreach($errors as $error) {
echo "<li>{$error}</li><br />";
}
} else {
echo "<p>No errors found </p>";
}
?>
函数就像有围墙的花园——你可以进出,但当你在里面时,你就看不到墙外的任何人。为了与其余代码进行交互,您要么必须将结果传回,通过引用传入变量,要么(最糟糕的方式)使用全局变量。
您可以在函数内将 $errors 数组声明为全局数组,然后更改它。这种方法不需要我们从函数中 return 任何东西。
function minLength($input, $min) {
global $errors;
if (strlen($input) <= $min) {
//this syntax adds a new element to an array
$errors[] = "Is that your real name? No its not.";
}
//else not needed. if input is correct, do nothing...
}
您可以通过引用传入 $errors 数组。这是另一种允许在函数内部更改全局声明变量的方法。我会推荐这种方式。
function minLength($input, $min, &$errors) { //notice the &
if (strlen($input) <= $min) {
$errors[] = "Is that your real name? No its not.";
}
}
//Then the function call changes to:
minLength($test, 20, $errors);
但为了完整起见,下面是使用 return 值的方法。这很棘手,因为无论输入是否错误,它都会添加一个新的数组元素。我们真的不想要一个充满空错误的数组,那是没有意义的。它们不是错误,所以它不应该 return 任何东西。为了解决这个问题,我们将函数重写为 return 字符串或布尔值 false,并在返回时测试该值:
function minLength($input, $min) {
if (strlen($input) <= $min) {
return "Is that your real name? No it's not.";
} else {
return false;
}
}
//meanwhile, in the larger script...
//we need a variable here to 'catch' the returned value of the function
$result = minLength("12345678901234", 12);
if($result){ //if it has a value other than false, add a new error
$errors[] = $result;
}
我是编程新手 PHP,我需要帮助解决我确定是一个简单的问题。我正在尝试将值添加到我的表单页面中称为错误的数组,这样我可以稍后回显它以进行验证,尽管我似乎无法从我包含的函数文件中向数组添加任何内容。
我需要函数<?php require_once("functions.php") ?>
然后我创建数组<?php $errors = array(); ?>
然后我从 includes <?php minLength($test, 20); ?>
函数在这里
function minLength($input, $min) {
if (strlen($input) <= $min) {
return $errors[] = "Is that your real name? No its not.";
} else {
return $errors[] = "";
}
}
然后像这样在结尾回显它们
<?php
if (isset($errors)) {
foreach($errors as $error) {
echo "<li>{$error}</li><br />";
}
} else {
echo "<p>No errors found </p>";
}
?>
但是最后没有回音,在此先感谢您的帮助
minLength()
函数 returns $errors
如您所定义。但是,您的代码中没有 $errors
从该函数接受 return。
示例代码为:
<?php
require_once("functions.php");
$errors = array();
$errors = minLength($test, 20);
if (count($errors) > 0) {
foreach($errors as $error) {
echo "<li>{$error}</li><br />";
}
} else {
echo "<p>No errors found </p>";
}
?>
函数就像有围墙的花园——你可以进出,但当你在里面时,你就看不到墙外的任何人。为了与其余代码进行交互,您要么必须将结果传回,通过引用传入变量,要么(最糟糕的方式)使用全局变量。
您可以在函数内将 $errors 数组声明为全局数组,然后更改它。这种方法不需要我们从函数中 return 任何东西。
function minLength($input, $min) {
global $errors;
if (strlen($input) <= $min) {
//this syntax adds a new element to an array
$errors[] = "Is that your real name? No its not.";
}
//else not needed. if input is correct, do nothing...
}
您可以通过引用传入 $errors 数组。这是另一种允许在函数内部更改全局声明变量的方法。我会推荐这种方式。
function minLength($input, $min, &$errors) { //notice the &
if (strlen($input) <= $min) {
$errors[] = "Is that your real name? No its not.";
}
}
//Then the function call changes to:
minLength($test, 20, $errors);
但为了完整起见,下面是使用 return 值的方法。这很棘手,因为无论输入是否错误,它都会添加一个新的数组元素。我们真的不想要一个充满空错误的数组,那是没有意义的。它们不是错误,所以它不应该 return 任何东西。为了解决这个问题,我们将函数重写为 return 字符串或布尔值 false,并在返回时测试该值:
function minLength($input, $min) {
if (strlen($input) <= $min) {
return "Is that your real name? No it's not.";
} else {
return false;
}
}
//meanwhile, in the larger script...
//we need a variable here to 'catch' the returned value of the function
$result = minLength("12345678901234", 12);
if($result){ //if it has a value other than false, add a new error
$errors[] = $result;
}