2011-05-25 46 views
0

我正在使用便攜式WAMP軟件包「USB Web服務器」。它給錯誤,如果我嘗試直接呼應了一些變量,例如PHP變量在定義之前不會打印

<?php 
echo $abc; 
?> 

我得到的錯誤是:「通知:未定義的變量:ABC」

這將很好地工作:

<?php 
$abc = "foo"; 
echo $abc; 
?> 

可以修復這個錯誤嗎? 我一定會使用便攜式WAMP軟件包,因爲我沒有管理員權限,所以我無法安裝任何其他軟件包。

+1

目前尚不清楚你想要什麼。顯然,在定義之前你不能'回顯'一個變量,因爲它不存在。這不是錯誤,這是正常行爲。那麼你爲什麼要'echo $ abc'? – 2011-05-25 12:43:45

+0

@Felix Kling,實際上我在另一臺PC上寫代碼,如果我沒有定義變量而沒有給出任何通知,但現在我將這些文件複製到另一臺計算機上,並且我收到了很多這些消息。無論如何要關閉通知? – sabba 2011-05-25 12:47:11

+0

只要你沒有分配任何東西給變量,它就包含'NULL',如果打印出來就會變成''「'空字符串。該通知只是用於調試目的的副產品,因爲通常情況下這不是您想要的。所以,*你爲什麼要它*? – mario 2011-05-25 12:47:24

回答

2

好吧,除了爲什麼我不知道你爲什麼要回聲一些沒有定義的東西,你沒有得到一個錯誤,你會得到一個通知。

如果你想做到這一點,你必須忽略通知在生產環境中,一樣可以read here是這樣工作的:

// Report all errors except E_NOTICE 
// This is the default value set in php.ini 
error_reporting(E_ALL^E_NOTICE); 
+1

儘管喜歡修復代碼比忽略問題更好。 *只有*這樣做,如果你*必須*,在生產中。但在執行此操作之前,請儘量修復您的代碼。上面的例子只是不好的代碼。 – rid 2011-05-25 12:47:04

+0

我同意。我也不明白你爲什麼會迴應沒有設置的東西。 – Nanne 2011-05-25 12:48:09

+0

我試圖這樣做,如果在會話中有任何價值,打印它,否則不打印任何東西。 – sabba 2011-05-25 12:56:26

0

變量確實沒有定義。你想要發生什麼?

如果你不想看到錯誤,那麼定義它。

<?php 
$abc = ''; 
echo $abc; 
?> 
1

如果未定義它應該打印什麼?

您可以檢查它是否被定義嘗試之前打印

if(isset($abc)) 
{ 
    echo $abc; 
} 

您還可以通過在該行的前面附加一個@符號

@echo $abc; 

取消錯誤但是,這是不推薦,可能會變慢。

0

那麼,答案是修復代碼,以便您不訪問尚未定義的變量。如果你需要,以防止它打印錯誤這是不正確的解決方案(*),那麼你就可以在你的錯誤報告關閉通知:

error_reporting(E_ALL^E_NOTICE); 

正確的解決方法是修復的代碼。

1

,以呼應其

如果之前在頁面

0

檢查它是否存在頂部取出的通知和警告 寫

error_reporting(E_ALL^E_NOTICE);(isset($ ABC)) { 回聲$ abc }

0

你當然也可以檢查變量是否存在。

<?php if (isset($myvar)) echo $myvar; ?> 

銅 羅馬

0

您還可以抑制在echo命令的警告。一般禁用警告是危險的。

<?php 
    @echo $abc; 
?> 
0

一個你在編程學習是最早的原則聲明變量。因此,修復此錯誤,聲明您的變量

但是,它可能發生在多種情況下,您不知道該變量是否已被定義或仍然想要避免該錯誤。

在這些情況下,檢查其存在第一:

// print $abc if set, or print an empty string/nothing 
echo isset($abc) ? $abc : ''; 
isset($abc) && print $abc; 
if (isset($abc)) echo $abc; 

上面的三條線會給完全相同的結果彼此。