2015-09-21 89 views
-1

下面的代碼中有一個循環函數。
此函數創建名爲$ short的變量。如何保存函數中的變量?

我希望能夠在一個陣列中使用從「好玩」功能之前的foreach循環創建的變量或保存所有結果。
如何保存在一個多頭排列($ ARRB)所有$短變量?

<?php 
$arrA=array('a','b','c','d','e'); 
$arrB=array();// ### ? ### 

function fun($param) 
{ 
for($i=0;$i<3;$i++) 
{ 
    $short='['.$param.$i.']'; 
    echo$short; 
    array_push($arrB,$short);// ### ? ### 
} 
} 

foreach($arrA as $var) 
{ 
fun($var); 
} 

print_r($arrB);// ### ? ### 
?> 

回答

1

$arrB不存在你的函數。你可以聲明這個變量「全球性」,即:宣佈它的存在的功能 - 這樣你的函數可以修改它。

function fun($param) { 

    global $arrB; 

    for(...){ 
     ..... 
    } 

} 

或者,你可以參照通過$arrB到您的功能,這將有功能修改變量的類似的效果。

function fun($param, &$arrB){ 

    ..... 

} 
+0

謝謝。它看起來像參考解決方案是我需要的。 – dryhay

0

你可以使用一個靜態變量:

php > function foo ($x) { 
    static $arr = array(); 
    $arr[] = $x; 
    var_dump($arr); 
} 
php > foo(1); 
array(1) { 
    [0]=> 
    int(1) 
} 
php > foo('hi mom!'); 
array(2) { 
    [0]=> 
    int(1) 
    [1]=> 
    string(7) "hi mom!" 
} 

這使得「staticked」變量包含它的函數返回後活路。沒有static關鍵字,$arr將在每次調用該函數時初始化,並且該數組只會包含一件事情。

如果您需要提供的功能外,該變量然後可以使用此方法static,並返回新的數組。或者只是使用一個全局變量。

相關問題