Uyarı olmadan bu PHP parçacığını işi yapmak nasıl?

3 Cevap php

Kodu kısa, ama complete:

function process($obj)
{
    if(empty($obj))return 1;
    return 2;
}


echo process($arr['nosuchkey']);

Hepimizin bildiği gibi, empty($arr['nosuchkey']) uyarıları rapor asla çağırıyor.

Ama process($arr['nosuchkey']) bir uyarı bildirir.

Uyarıları devre dışı bırakmadan bir çözüm var mı; sözdizimi ile, demek?

3 Cevap

Sen error control operator @ kullanabilirsiniz ama bu sadece bildirimler daha çok bastırır.

echo @process($arr['nosuchkey']);

Sen işlev çağrısı önce kontrol daha iyi olurdu:

if (array_key_exists('nosuchkey', $arr))
    echo process($arr['nosuchkey']);

Veya ayrı ayrı anahtarı geçen

echo process($arr, 'nosuchkey');

Insanların bir sürü yakalamak - aranızda empty() , isset() and array_key_exists() farkı bildiğinizden emin olun.

Bunu dene

 function process(&$obj)

Bu iş olacak eğer Im değil emin

Belki

function process($obj, $index = null) {
    if(is_array($obj))
    {
         if(!array_key_exists($index, $obj))
             return 1;
         else
             return 2;
    }

    if(empty($obj)) 
        return 1;

    return 2;

}

@ Mümkün olan uyarıları gizlemek etmeyin.