Синтаксис php, массивы и ошибки

Почему следующий код дает мне ошибку в php?:

$b = array("1" => "2")["1"];

Ошибка, которую я получаю, это ошибка Parse...

Справка.

Ответы

Ответ 1

К сожалению, в PHP вам нужно сделать это:

$a = array("1" => "2");
$b = $a["1"];

Кажется, что ваш пример должен работать, потому что он работает на других языках. Но это как раз то, как PHP.

Ответ 2

Пара вещей. Вы не можете вытаскивать сразу из массивов во время создания, а ключи числовых значений автоматически преобразуются в целые числа, даже если они предназначены для строк.

Ответ 3

Вы можете использовать для этого функцию:

function Get($array, $key, $default = false)
{
    if (is_array($array) === true)
    {
        settype($key, 'array');

        foreach ($key as $value)
        {
            if (array_key_exists($value, $array) === false)
            {
                return $default;
            }

            $array = $array[$value];
        }

        return $array;
    }

    return $default;
}

И используйте его следующим образом:

$b = Get(array("1" => "2"), "1"); // 2

Если вам не нужно обращаться к многомерным массивам, вы также можете использовать эту более короткую функцию:

function Get($array, $key, $default = false)
{
    if (is_array($array) === true)
    {
        return (array_key_exists($value, $array) === true) ? $array[$value] : $default;
    }

    return $default;
}