运行一个包含函数的循环

Sbo*_*nde 2 php for-loop function

我在尝试在循环中运行代码时遇到问题,我的循环由一个函数组成.

这是我的编码:

$new = array(1,2,3,4);
for($i=0;$i<=3;$i++){
$val = $new[$i];



function myfunction($value) {   
    //Do something
}

echo $val;
}
Run Code Online (Sandbox Code Playgroud)

问题是代码只输出数组中的第一个值.我很困惑,我不想在循环中声明一个函数?

bho*_*nes 8

您的代码最终会出现致命错误,因为在第二次迭代时它会尝试重新声明函数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;
}
Run Code Online (Sandbox Code Playgroud)

PHP是一种脚本语言,在for循环或if语句内部声明一个函数在语法上是正确的,但这是一种不好的做法,之后可能会导致很多错误.
最好的方法是在循环外声明一个函数,如果需要,可以在循环中调用它,如下所示:

<?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;
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*Jon 6

不要在循环中声明函数,在循环之前声明它,然后在循环内调用它 myFunction($value);

  • Psh,只需遵循编程最佳实践,您通常希望首先声明您的函数.但事实上,PHP会让你在之后声明它.= P (2认同)

Joh*_*Woo 5

该功能应该在一个单独的程序中

$new = array(1,2,3,4);
for($i=0;$i<=3;$i++)
{
   $val = $new[$i];
   myfunction($val)
   echo $val;
}
Run Code Online (Sandbox Code Playgroud)

那么这就是你的功能

function myfunction($value) 
{   
    //Do something
}
Run Code Online (Sandbox Code Playgroud)