2013-03-10 69 views
0

我有一個簡單的函數,它應該檢查傳入的參數是否爲數組並且具有值。除了當我傳遞一個多維數組作爲屬性時,該函數可以完美地工作。我懷疑isset()通過,但因爲密鑰可能不存在,它給出了一個未定義:當傳遞的數組是一個鍵而不是數組時,抑制通知

<?php 
$array1 = array("John","Doe"); 
$array2 = array(); 

function valid_array($array) { 
    if (is_array($array) && count($array) > 0) { 
     return true; 
    } 
    return false; 
} 

// Below works great: 
valid_array($array1); 

// If I pass the following I get the notice 
// Notice: Undefined index: sample_key in ....: 
valid_array($array2['sample_key']);  


?> 

任何想法?

+1

你爲什麼要壓制通知?它警告你不正確的用法,這是在你的函數之外發生的。嘗試調用它時,它是無效的數組訪問。 – mario 2013-03-10 18:05:01

回答

0

這意味着,沒有數組項作爲sample_key作爲其關鍵。使用isset()來驗證,不要壓制它。

​​

這種情況被稱爲Exceptions捕獲它們並拋出一個錯誤。

以下是在使用時引發錯誤的方法。

function valid_array(array $array) { 
       // ^Asks for a generic array to be passed 
    if (is_array($array) && count($array) > 0) { 
     return true; 
    } 
    return false; 
} 
0

以抑制誤差的最簡單方法是使用「@」符號調用的函數之前:

舉例:@my_custom_function(); 這會抑制你的功能可能會生產出任何錯誤(但它會不解決它們)

相關問題