php, если ключ массива существует внутри многомерного массива - PullRequest
1 голос
/ 10 мая 2010

как я могу проверить, существует ли логотип в этом массиве с именем $ attachchements print_r ниже:

Массив ( [logo] => /home/richar2/public_html/ioagh/images/stories/jreviews/20100510115659_1_img.gif )

когда нет логотипа, массив print_r

Array ()

я попробовал: if (isset ($ attachments ['logo'])) {..} но условный код запускается при отсутствии логотипа

Ответы [ 6 ]

2 голосов
/ 10 мая 2010

Используйте функцию array_key_exists.

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

1 голос
/ 10 мая 2010

Это работает для меня, как и ожидалось:

$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!';
}

Вы уверены, что установили $ arr ['logo'] = null, а не $ arr ['logo'] = ''? Для последнего вы также можете проверить

if (isset($arr['logo'] && !empty($arr['logo'])){
...
}
1 голос
/ 10 мая 2010

Очень странно, что isset () не работает, я уверен, что так и должно быть. Возможно, у вас есть проблема в другом месте вашего кода.

В любом случае, если вы хотите попробовать что-то еще, есть специальная функция: array_key_exists ()

0 голосов
/ 25 ноября 2011

Вы могли бы написать это как:

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;
}
0 голосов
/ 10 мая 2010

Вы можете использовать array_key_exists .

0 голосов
/ 10 мая 2010

но условный код запускается, когда нет логотипа

Вы можете создать предложение else для выполнения соответствующих действий:

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

Или просто попробуйте это:

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

Подробнее о array_key_exists

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...