簡體   English   中英

PHP 變量在定義之前不會打印

[英]PHP variable won't print before defining it

我正在使用便攜式 WAMP package“USB web 服務器”。 例如,如果我嘗試直接回顯某些變量,則會出錯

<?php
echo $abc;  
?>

我得到的錯誤是:“注意:未定義的變量:abc”

這將正常工作:

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

是否可以修復此錯誤? 我必須使用便攜式 WAMP package,因為我沒有管理員權限,所以我不能安裝任何其他 package。

好吧,除了為什么我不知道為什么要回顯未定義的內容之外,您沒有收到錯誤,而是收到了通知。

如果你想這樣做,你必須忽略生產環境中的通知,就像你可以在這里閱讀的那樣:

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

如果沒有定義它應該打印什么?

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

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

您還可以通過在行前附加 @ 符號來抑制錯誤

@echo $abc;

但不建議這樣做,可能會更慢。

刪除通知和警告寫

error_reporting(E_ALL ^ E_NOTICE); 在頁面頂部

該變量確實沒有定義。 你到底想發生什么?

如果您不想看到錯誤,請定義它。

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

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

error_reporting(E_ALL ^ E_NOTICE);

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

在回顯之前檢查它是否存在

if( isset($abc) ) { 回聲 $abc }

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

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

古羅馬

您還可以抑制 echo 命令上的警告。 通常禁用警告是危險的。

<?php
    @echo $abc;
?>

您在編程中學習的最早原則之一是聲明變量 因此,要修復此錯誤請聲明您的變量

但是,在多種情況下可能會發生您不知道變量是否已定義,但仍想避免錯誤的情況。

在這些情況下,首先檢查它的存在:

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

上面的三行將給出完全相同的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM