2016-05-18 20 views
0

當我查詢foreach循環內的數據時,它可以正常工作,但是會爲循環中的每一遍都重複。我嘗試在循環外的任何地方var_dump,並且數據不在那裏。爲什麼我的數據不會保存在forEach循環之外?如何讓我的PHP數組數據保持?

<?php 


    $old_array = [10-2, 13=>"3452", 4=>"Green", 
5=>"Green", 6=>"Blue", "green"=>"green", 
"two"=>"green" ,"2"=>"green" , "rulebreak" =>"GrEeN", 
"ninja"=>" Green ", ["blue" => "green", "green"=>"green", 2 => "itsGreen"] ]; 

$newArray = array(); 

function filter_Green($array) { 



$find = "green"; 
$replace = "not green"; 

/* Same result as using str_replace on an array, but does so recursively for multi-dimensional arrays */ 
/* found here: 

if (!is_array($array)) { 
    /* Used ireplace so that searches can be case insensitive */ 
    return str_ireplace($find, $replace, $array); 
} 


foreach ($array as $key => $value) { 

    $newArray[$key] = $value; 
    if ($key == "green") { 
    $newArray[$key] = "not green"; 
    } 
    if ($value == "green") { 
    $newArray[$value] = "not green"; 
    } 


} 

return $newArray; 

} 

filter_Green($old_array); 

    var_dump($newArray); 
?> 

後市展望:當我運行的功能,應該用「不綠色」替代「綠色」的所有實例,並保存成$newArray。我有返回$ newArray,但即使如此,它似乎沒有匹配的價值被保存到newArray,因此,我爲什麼要做var_dump來檢查它是否工作(它似乎不是)

結果:因爲它被設置,我得到一個空數組返回給我......如果我將var_dump($ newArray)移動到foreach循環內,但它會爲每次傳遞複製數據,似乎會有所作用。

+0

請修改您的問題。目前的產出是多少?預期的產出是多少? –

+0

你在哪裏放置var_dump?如果它在函數內部(在循環之後),它將工作正常,如果它在函數之外,它將不起作用,因爲$ newArray是在函數範圍內定義的,所以應該將返回的值分配給另一個變量。 –

回答

1

,如果你想的var_dump $newArray出側的功能,那麼你應該在你的函數聲明$newArray作爲global

<?php 


$old_array = [10-2, 13=>"3452", 4=>"Green", 5=>"Green", 6=>"Blue", "green"=>"green", "two"=>"green" ,"2"=>"green" , "rulebreak" =>"GrEeN", "ninja"=>" Green ", ["blue" => "green", "green"=>"green", 2 => "itsGreen"] ]; 

$newArray = array(); 

function filter_Green($array) { 
global $newArray; 


$find = "green"; 
$replace = "not green"; 

/* Same result as using str_replace on an array, but does so recursively for multi-dimensional arrays */ 

if (!is_array($array)) { 
    /* Used ireplace so that searches can be case insensitive */ 
    return str_ireplace($find, $replace, $array); 
} 


foreach ($array as $key => $value) { 

    $newArray[$key] = $value; 
    if ($key == "green") { 
    $newArray[$key] = "not green"; 
    } 
    if ($value == "green") { 
    $newArray[$value] = "not green"; 
    } 


} 

return $newArray; 

} 

filter_Green($old_array); 
var_dump($newArray); 

?> 

但不是在函數聲明global,使用由filter_Green($old_array);返回值,如下

$result = filter_Green($old_array); 
var_dump($result); 
+0

良好的調用存儲函數結果到一個變量,這將做的伎倆;) – Frankenmint