运行一个包含函数的循环

时间:2012-10-17 07:44:37

标签: php function for-loop

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

这是我的编码:

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



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

echo $val;
}

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

9 个答案:

答案 0 :(得分: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;
}

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;
}

答案 1 :(得分:6)

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

在循环内调用它

答案 2 :(得分:5)

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

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

然后这是你的功能

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

答案 3 :(得分:1)

  • 在循环之外声明函数
  • 从函数返回值,或者让函数输出数据

例如:

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

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

答案 4 :(得分:0)

这不是写它的方式...... 首先在循环外声明函数

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;
}

答案 5 :(得分:0)

我假设您要打印出数组的前4个元素。 做这样的事

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

myfunction();

答案 6 :(得分:0)

您应该在循环外声明函数

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个条目,代码应该没问题

答案 7 :(得分:0)

您可以改为声明匿名函数:

for ($i=0; $i<=3; $i++) {
    // code
    $myFunction = function($value) { /* code */ }
    $myFunction($val);
    // code
}

答案 8 :(得分:-3)

你不应该在循环中声明这个函数......