php sözdizimi, diziler ve hatalar

3 Cevap php

Neden aşağıdaki kod php bana bir hata veriyor mu?:

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

Ben olsun Hata Ayrıştırma hatadır ...

Yardım.

3 Cevap

Ne yazık ki, PHP, bunu yapmak gerekir:

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

Diğer dillerde de yapar çünkü örnek çalışması gerekir gibi hissediyor. Ama bu PHP sadece yoludur.

Birkaç şey. Sen onlar dizeleri olması amaçlanmıştır olsanız bile, oluşturulması sırasında diziler hemen çekemez, ve sayısal değerlerin tuşlar otomatik olarak sayılara dönüştürülür.

Sizin için bunu yapmak için bir işlevini kullanabilirsiniz:

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;
}

Ve bu gibi kullanmak:

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

Eğer çok boyutlu diziler erişmek için gerek yoksa da, bu kısa işlevini kullanabilirsiniz:

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

    return $default;
}