簡體   English   中英

PHP中未定義的索引,isset和引用

[英]Undefined index, isset and references in PHP

如果訪問空引用的未定義索引,則PHP不會引發任何錯誤。

<?php

$array = &$foo['bar'];
if ($array['stuff']) echo 'Cool'; // No PHP notice
$array['thing'] = 1; // Array created; $foo['bar']['thing'] == 1
$array['stuff']; // PHP notice

如果$array不是參考,PHP將在第一行抱怨。

為什么不提供參考? 我是否需要使用isset來獲取null引用,還是PHP在內部抱怨並且不讓我知道?

在您的代碼$array為空。 以下代碼也不會發出通知:

$b = null;
if ($b['stuff']) echo 'cool';

這很奇怪,文檔中的注釋指出了這一事實。

您必須提高錯誤報告級別。 您的示例$array['stuff']將引發有關未找到索引的警告。 我經常將密鑰測試與評估結合在一起,以防止出現這些警告:

if( array_key_exists("blah",$arr) && strlen($arr['blah']) > 0 ) { 
    ; // do stuff here
}

我經常將變量與數組名結合在一起,因為每當我不得不將n粘貼剪切代碼復制到下一節以執行相同的操作時,我寧願創建一個變量名數組,然后遍歷變量名。 最荒謬的情況是當我要處理帳單和運輸數據時,將有一個數組變量名$BorS或只是$BS ,然后在頂部設置$BorS="shipping"; 並最終得到非常有趣的語句,例如:

${$BorS."data"}[${$BorS."_addr1"}]=$input_array[$BorS."_address_line_1"];

為什么不做:

$array = array();

暫無
暫無

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

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