dizi anahtarı çok boyutlu dizi içinde varsa php

6 Cevap php

logosu aşağıda print_r $ attachements denilen bu dizide varsa nasıl ben kontrol edebilirsiniz:

Array ( [logo] => /home/richar2/public_html/ioagh/images/stories/jreviews/20100510115659_1_img.gif )

varken hiçbir logosu, dizi print_r en

Array ()

i tried: if (isset($attachments['logo']) ) {..} but the conditional code runs when there is no logo

6 Cevap

Işlevini kullanın array_key_exists.

http://php.net/manual/en/function.array-key-exists.php

Bu isset () çalışmıyor olması çok stange, ben gerektiği eminim. Belki başka bir yerde kodunda bir sorun var.

Başka bir şey denemek istiyorsanız Neyse, belirli bir işlevi vardır: array_key_exists()

but the conditional code runs when there is no logo

Siz uygun önlemleri almak için else tümcesi kurabilirsiniz:

if (isset($attachments['logo']))
{
  // logo is set
}
else
{
  // loto is not set
}

Ya da sadece bu deneyin:

if (array_key_exists('logo', $attachments))
{
    // logo is set
}

Daha fazla bilgi array_key_exists

Sen kullanabilirsiniz array_key_exists.

Beklendiği gibi bu benim için çalışıyor:

$arr['logo'] = '/home/richar2/public_html/ioagh/images/stories/jreviews/20100510115659_1_img.gif';
print_r($arr);

if (isset($arr['logo'])){
    echo $arr['logo'];
}else{
    echo 'Key doesn\'t exist!';
}

Are you sure you set $arr['logo'] = null, not $arr['logo'] = ''? For the latter you can also check

if (isset($arr['logo'] && !empty($arr['logo'])){
...
}

Eğer gibi yazabilirsiniz:

function md_array_key_exists ($key, $array)
{
    foreach ($array as $item => $val)
    {
        if ($item === $key)
        {
            return true;
        }

        if (is_array ($val))
        {
            if (true == marray_key_exists ($key, $val))
                return true;
        }
    }

    return false;
}