2017-04-25 9 views
-1

私は、次の手順を実行した場合:のみ最初の1が返され返品は最初の返品のみです。

if(ICL_LANGUAGE_CODE=='it'){ 
    $it1 = "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo antico</strong> è dal <strong>3500 a.C. fino al 476 d.C.</strong></li>"; 
    $it2 = "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo medievale</strong> è dal <strong>476 dC fino al 1492 d.C.</strong></li>"; 
    $it3 = "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo moderno</strong> è dal <strong>1492 dC fino al 1789 d.C.</strong></li>"; 
    $it4 = "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo Contemporaneo</strong> va dal <strong>1789 d.C. fino ad oggi.</strong></li>"; 
    return $it1; 
    return $it2; 
    return $it3; 
    return $it4; 
    } 

<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo antico</strong> è dal <strong>3500 a.C. fino al 476 d.C.</strong></li> 

私が代わりにreturnechoを使用しようとしましたが、それは動作しますが、それは私は本当にこのため、レイアウトの外に置きますreturnを使用する必要がありますが、私はなぜ1つだけが返されるのか分かりません。

+0

最初のものから戻ってくるため、最初のものだけが返されます – Akshay

答えて

6

return機能をさらにコードの実行を停止します。

いずれの機能も1回以上返すことはできません。ファンクションが最初に戻ってきたら、直ちに停止して最初のファンクションを戻します。

あなたはreturnは、関数が実行される$it1を-ing後なぜなら起こってこの

if(ICL_LANGUAGE_CODE=='it'){ 
    $it1 = "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo antico</strong> è dal <strong>3500 a.C. fino al 476 d.C.</strong></li>"; 
    $it1 .= "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo medievale</strong> è dal <strong>476 dC fino al 1492 d.C.</strong></li>"; 
    $it1 .= "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo moderno</strong> è dal <strong>1492 dC fino al 1789 d.C.</strong></li>"; 
    $it1 .= "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo Contemporaneo</strong> va dal <strong>1789 d.C. fino ad oggi.</strong></li>"; 
    return $it1; 
} 
1

あなたが戻ってきたので、後続の実行を停止し、あなたが話した変数/コンテンツを返します。解決方法は、文字列全体を一度に戻すことです。別途必要な場合は、配列を返します。

if(ICL_LANGUAGE_CODE=='it'){ 
    $it1 = "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo antico</strong> è dal <strong>3500 a.C. fino al 476 d.C.</strong></li>"; 
    $it1 .= "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo medievale</strong> è dal <strong>476 dC fino al 1492 d.C.</strong></li>"; 
    $it1 .= "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo moderno</strong> è dal <strong>1492 dC fino al 1789 d.C.</strong></li>"; 
    $it1 .= "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo Contemporaneo</strong> va dal <strong>1789 d.C. fino ad oggi.</strong></li>"; 
    return $it1; 
} 

上記はすべてを含む文字列を返します。別の行として使用できる配列として返すことができます(このコードの使い方によって異なります)。

if(ICL_LANGUAGE_CODE=='it'){ 
    $it1 = "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo antico</strong> è dal <strong>3500 a.C. fino al 476 d.C.</strong></li>"; 
    $it2 = "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo medievale</strong> è dal <strong>476 dC fino al 1492 d.C.</strong></li>"; 
    $it3 = "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo moderno</strong> è dal <strong>1492 dC fino al 1789 d.C.</strong></li>"; 
    $it4 = "<li><span class='glyphicon glyphicon-time' aria-hidden='true'></span> Il periodo Contemporaneo</strong> va dal <strong>1789 d.C. fino ad oggi.</strong></li>"; 
    return array($it1, $it2, it3, it4); 
} 
1

を試してみてください、それには更なるコードは実行されません取得し、制御が戻って、それが呼び出された場所にあります。あなたが戻って取得する必要がある場合は

は、すべてあなたがそれらの配列を返すことができ-s $itは、次のようになめらか:

return array($it1, $it2, $it3, $it4); 
1

リターンはあなたが現在である機能を終了するキーワードである の欠点。 PHPのようなソフトタイプの言語は、この事実を忘れることができるということです。エコーは確実にあるため、関数コンテキストの正しく表示されない

(あなたは「利回り」として、それを誤解していましたか?)。 必要なすべての値を含む配列を1つ返すことができ、それを上位関数に表示することができます。

$arr = [val1, val2, val3, ... ] 
return $arr 
1

いずれの言語でも、returnは、後で実行が停止することを意味します。いくつかの言語では、returnステートメントの後に何も置くことはできません。メソッドから複数の値を返す必要がある場合は、次のいずれかを実行できます。それはPHPだとして、私は、文字列の代わりに、私はむしろ、配列を返すだろう

function passByReference($param1, &$referencedParam1){ 
    // your code here, 
    // change the referenced value here 
    $referencedParam1 = $newValue; 
    return $anotherCalculatedValue; 
} 

function pass by reference

function returnArray($param1, $param2, $param3){ 
    // your code here 
    // return an array instead of a particular value 
    return [$param1, $param2, $param3]; 
} 

var_dump(returnArray(1,2,3)); 
var_dump(implode(", ", returnArray(1,2,3))); 

return array from a method

PHPであなたにいくつかの例を与えるつもりです連結。しかし好きなように使うことはできますが、連結された文字列を返すことで、他の形式で使用したい場合はどこからでも使用できます。