2013-04-01 28 views
-1

我試圖做一個很酷的PHP函數來取代的東西,但我得到解析錯誤並不明顯的原因。我錯過了什麼嗎?PHP解析錯誤,str_replace數組中的值

error_reporting(E_ALL); 

$array_pairs = array('{{simple}}' => 'simple_value', '{{organization}}' => 'Apple Inc'); 


function the_replace($aray_pairs, $content){ 
foreach($aray_pairs as $a => $b) 
{ 
$content = str_replace($a, $b, $content); 

return $content; 
} 


$invoice = '{{organization}} is a {{simple}}'; 

$invoice = replace_values($array_pairs, $invoice); 
echo $invoice; 
+0

爲什麼做一個循環? '$ content = str_replace(array_keys($ pairs),array_values($ pairs),$ content);'str_replace可以接受一個數組用於搜索和一個數組進行替換。 –

+0

@GigaWatt不知道那個(array_keys,array_values)!非常感謝 !我基本上試圖讓自己這樣一個功能 –

回答

1

缺少} 功能名稱不匹配太

error_reporting(E_ALL); 

$array_pairs = array('{{simple}}' => 'simple_value', '{{organization}}' => 'Apple Inc'); 


function replace_values($aray_pairs, $content){ // function names didn't match too. 
    foreach($aray_pairs as $a => $b) 
    { 
     $content = str_replace($a, $b, $content); 

    } 
    return $content; 

} // here 

$invoice = '{{organization}} is a {{simple}}'; 

$invoice = replace_values($array_pairs, $invoice); 
echo $invoice; 
+0

謝謝,的確我錯過了。除此之外,我得到的結果{{organization}}是一個simple_value,而不是預期的Apple inc是一個simple_value。任何想法如何解決它? –

+0

我剛剛爲您更新了我的代碼。 你在你的foreach中使用了'return',所以它在第一次迭代中返回你的內容,所以它沒有到達你的第二個數組鍵 – Adrian

+0

但是,你可以將數組傳遞給'str_replace()',它不一定是一個字符串。 – Adrian