3

ループ内でコードを実行しようとすると問題が発生します。ループは関数で構成されています。

これが私のコーディングです:

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



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

echo $val;
}

問題は、コードが配列の最初の値のみを出力することです。私は非常に混乱しています。ループ内で関数を宣言する必要はありませんか?

4

9 に答える 9

8

2回目の反復で 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 はスクリプト言語であり、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;
}
于 2012-10-17T07:56:54.577 に答える
6

ループ内で関数を宣言しないでください。ループの前に宣言してから、ループ内で次のように呼び出します。myFunction($value);

于 2012-10-17T07:46:07.650 に答える
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
}
于 2012-10-17T07:46:38.617 に答える
1
  • ループの外で関数を宣言する
  • 関数から値を返すか、関数にデータを出力させる

例えば:

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

$new = array(1,2,3,4);
for($i=0;$i<=3;$i++) {
  myfunction($new[$i]);
}
于 2012-10-17T07:46:17.197 に答える
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;
}
于 2012-10-17T07:47:47.273 に答える
0

配列の最初の 4 つの要素を出力したいと想定しています。このようなことをする

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

myfunction();
于 2012-10-17T07:48:55.540 に答える
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 つ以上のエントリがある場合でも、コードは問題ありません。

于 2012-10-17T07:49:14.340 に答える
-3

ループ内で関数を宣言することは想定されていません...

于 2012-10-17T07:49:49.877 に答える