[英]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.