我嘗試運行循環內的代碼時出現問題,我的循環由一個函數組成。運行一個內部具有函數的循環
這是我的編碼:
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++){
$val = $new[$i];
function myfunction($value) {
//Do something
}
echo $val;
}
的問題是隻有代碼輸出在我的陣列第一值。我很困惑,我是不是想在循環中聲明一個函數?
我嘗試運行循環內的代碼時出現問題,我的循環由一個函數組成。運行一個內部具有函數的循環
這是我的編碼:
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++){
$val = $new[$i];
function myfunction($value) {
//Do something
}
echo $val;
}
的問題是隻有代碼輸出在我的陣列第一值。我很困惑,我是不是想在循環中聲明一個函數?
你的代碼最終致命埃羅r,因爲在第二次迭代時它會嘗試重新聲明函數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是一種腳本語言,它在語法上是正確的內聲明的一個功能循環或內部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;
}
我覺得''if(!function_exists('myfunction')) ''應該嵌入到語言規範中。如果有人想在一個循環內部聲明一個函數(這是允許的,*有趣的用法*),他們不應該每次都訴諸同一個樣板。 – William
例如:
function myfunction($value) {
//Do something
echo $value;
}
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++) {
myfunction($new[$i]);
}
的功能應該是在一個單獨的程序
$new = array(1,2,3,4);
for($i=0;$i<=3;$i++)
{
$val = $new[$i];
myfunction($val)
echo $val;
}
那麼這是你的函數
function myfunction($value)
{
//Do something
}
謝謝你,我知道我錯過了一些小事,我浪費了一個小時試圖弄清楚,我覺得現在很愚蠢: - D –
,是不是寫的方式來做到這一點... 首先聲明循環
外的函數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項代碼應該是確定
你是不是suposed申報循環中的功能...
你可以聲明,而不是一個匿名函數:
for ($i=0; $i<=3; $i++) {
// code
$myFunction = function($value) { /* code */ }
$myFunction($val);
// code
}
爲什麼你的循環中有一個函數? – Blender
作爲正確的答案已經給出,爲什麼發生這種情況的一個簡短的通知:你的代碼試圖重新定義函數3次,這是不允許在PHP中。小技巧:在腳本開始時使用'error_reporting(E_ALL);'或者在學習/開發時將其設置在php.ini中 - 使用此設置,您會看到「致命錯誤,嘗試重新定義函數myFunction in ...「 – cypherabe
'for($ i = 0; $ i <= 3; $ i ++){$ val = $ new [$ i];'可以寫成foreach($ new as $ val) {...' –