我在尝试在循环内运行代码时遇到问题,我的循环由一个函数组成。
这是我的编码:
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++){
$val = $new[$i];
function myfunction($value) {
//Do something
}
echo $val;
}
问题是代码只输出我数组中的第一个值。我很困惑,我不应该在循环内声明一个函数吗?
您的代码最终会出现致命错误,因为在第二次迭代时它会尝试重新声明 function myfunction
。这就是为什么它只打印数组的第一个值。
为了避免该致命错误,您可以检查该函数是否已使用function_exists()
如下函数定义:
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++)
{
$val = $new[$i];
if(!function_exists('myfunction'))
{
function myfunction($value) {
//Do something
}
}
echo $val;
}
PHP is a scripting language and it is syntactically correct to declare a function inside for loop or inside if statement, but it is a bad practice and can cause a lot of errors afterwards.
The best way is to declare a function outside loop, and, if needed, call it from within a loop like this:
<?php
function myfunction($value) {
//Do something
}
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++)
{
$val = $new[$i];
myfunction($value); //may you was intended to pass $val here?
echo $val;
}
不要在循环内声明函数,在循环之前声明它,然后在循环内调用它myFunction($value);
该函数应该在一个单独的过程中
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++)
{
$val = $new[$i];
myfunction($val)
echo $val;
}
那么这是你的功能
function myfunction($value)
{
//Do something
}
例如:
function myfunction($value) {
//Do something
echo $value;
}
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++) {
myfunction($new[$i]);
}
这不是正确的做法......首先在循环外声明函数,然后在循环中调用函数
function myfunction($value) {
//Do something
}
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++){
$val = $new[$i];
myfunction( $val); //call function where u wanted... here (in your case)
echo $val;
}
我假设您想打印出数组的前 4 个元素。做这样的事情
function myfunction() {
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++){
$val = $new[$i];
echo $val;
}
}
myfunction();
您应该在循环外声明该函数
function myfunction($value) {
return ($value + 25); // an example
}
$new = array(1,2,3,4);
for($i = 0; $i < count($new); $i++){
echo myfunction($new[$i]);
}
此外,您应该将循环设置为从 0 到数组的末尾,因此如果数组中的条目超过 4 个,则代码应该没问题
You can declare an anonymous function instead:
for ($i=0; $i<=3; $i++) {
// code
$myFunction = function($value) { /* code */ }
$myFunction($val);
// code
}
你不应该在循环中声明函数......