2011-07-17 13 views
0

我試圖創建一個簡單的語言功能,但我無法讓它工作。這個想法應該清楚。我沒有收到任何錯誤消息,但它不會顯示我的文字。這是我的代碼:我創建一個簡單的語言函數失敗了,我做錯了什麼?

INC/text.php:

<?php 

$show = array(

"welcome" => "Welkom @ ....", 
'test' => true 

); 

function show($foo) { 

echo $show[$foo]; 

} 

?> 

的index.php:在函數中

<?php show("welcome"); ?> 
+2

它無法識別函數中的$ show – Nickool

+0

您沒有收到任何錯誤,因爲您錯過了啓用錯誤報告:將其放在腳本的第一行:error_reporting(-1); ini_set('display_errors',1);'和PHP會告訴你有關腳本所具有的一個或其他問題。 – hakre

回答

1

它看起來對我像你宣佈$show外範圍10

要麼宣佈$節目裏面的功能或做:

$show = array(); //blah blah 

function show($foo) 
{ 
    global $show; 
    echo $show[$foo]; 
} 
3

將$顯示陣列全球範圍內,並返回值不回它

<?php 

$show = array(
"welcome" => "Welkom @ ....", 
'test' => true 
); 

function show($foo) { 
global $show; 
return $show[$foo]; 
} 
?> 

<p><?php echo show("welcome"); ?></p> 
+0

而不是建議使用全局變量,你應該已經看到,你可以用一個簡單的數組訪問來解決這個問題,而不是調用一個函數。沒有必要重新發明輪子。 – hakre

+0

同時使用return和echo對我來說似乎有點奇怪。在函數聲明中使用echo是否是錯誤的? – Melvin

+0

IMO函數不應該回顯,就像在構建頁面時調用該函數一樣,它將在頂部回顯,因爲echo'ing需要更多資源然後聲明變量,所以我總是首先構建頁面,我的所有項目都只有1個回聲和它通常在最後一行,我討厭每一行回聲或打破和出來的代碼 –

1

您需要聲明SHOW陣列,所以從功能入店。

你有幾夭的方法來做到這一點

  • 全局變量
  • 傳遞它像一個參數
  • 聲明數組在函數聲明的

實例函數內部

function show($foo) { 
    $show = array(
    "welcome" => "Welkom @ ....", 
    'test' => true 
); 

    echo $show[$foo]; 
} 
-1

你不需要這樣的功能:

<?php echo $show["welcome"]; ?> 

這應該已經做到了。讓我知道如果這沒有幫助,爲什麼。

+0

這不是一個真正的選擇,因爲我要在我的函數中實現多種語言。 – Melvin

+0

真的嗎?那麼你接受的答案如何在概念上有所不同呢?它完全一樣,只是將它封裝在一個函數中。 – hakre

+0

@downvoter:請分享你的想法。 – hakre