簡體   English   中英

運行一個內部有函數的循環

[英]Running a loop that has a function inside it

我在嘗試在循環內運行代碼時遇到問題,我的循環由一個函數組成。

這是我的編碼:

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



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

echo $val;
}

問題是代碼只輸出數組中的第一個值。 我很困惑,我不是想在循環內聲明一個函數嗎?

您的代碼最終會出現致命錯誤,因為在第二次迭代時它會嘗試重新聲明函數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;
}

不要在循環內部聲明函數,在循環之前聲明它,然后在循環內部用myFunction($value);調用它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 個以上的條目,則代碼應該沒問題

您可以改為聲明一個匿名函數:

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

你不應該在循環中聲明函數......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM