Bir fonksiyonu ile Access PHP dizi elemanı?

6 Cevap php

Ben çok boyutlu bir dizi boyunca yineleme yapmak için PHP'nin dahili dizi işaretçileri kullanan bir program üzerinde çalışıyveyaum. Ben geçerli satırın bir öğe almak gerekiyveya, ve ben gibi yapıyveya oldum:

$arr[key($arr)]['item']

Ancak, ben çok şey gibi kullanmayı tercih ediyveyaum:

current($arr)['item'] // invalid syntax

Ben bir işlev veyaada ben şöyle öğeye erişmek için beni sağlayacak belgelere benim taramada kaçırdığımız var umuyveyaum:

getvalue(current($arr), 'item')

veya

current($arr)->getvalue('item')

Herhangi bir öneriniz?

6 Cevap

Ben çok şüphe böyle bir işlevi vardır, ama yazmak için önemsiz bulunuyor

function getvalue($array, $key)
{
  return $array[$key];
}

Düzenleme: PHP 5.4 olarak, bir fonksiyon ifadeleri doğrudan dizin dizi elemanları, current($arr)['item'].

Henüz iterator classes birini kullanarak denediniz mi? Eğer istiyor tam olarak ne orada bir şey olabilir. Eğer değilse, büyük olasılıkla DiziNesnesi sınıfını genişleterek istediğinizi alabilirsiniz.

Bu fonksiyon biraz know-how olabilir ama ben özellikle scenarious benzeri, o her zaman kullanın:

if (array_key_exists('user', $_SESSION) === true)
{
    if (array_key_exists('level', $_SESSION['user']) === true)
    {
    	$value = $_SESSION['user']['level'];
    }

    else
    {
    	$value = 'DEFAULT VALUE IF NOT EXISTS';
    }
}

else
{
    $value = 'DEFAULT VALUE IF NOT EXISTS';
}

Bu döner:

Value($_SESSION, array('user', 'level'), 'DEFAULT VALUE IF NOT EXISTS');

İşte fonksiyonudur:

function Value($array, $key = 0, $default = false)
{
    if (is_array($array) === true)
    {
    	if (is_array($key) === true)
    	{
    		foreach ($key as $value)
    		{
    			if (array_key_exists($value, $array) === true)
    			{
    				$array = $array[$value];
    			}

    			else
    			{
    				return $default;
    			}
    		}

    		return $array;
    	}

    	else if (array_key_exists($key, $array) === true)
    	{
    		return $array[$key];
    	}
    }

    return $default;
}

Not: Ayrıca, bu gibi tek boyutlu diziler kullanabilirsiniz:

Value($_SERVER, 'REQUEST_METHOD', 'DEFAULT VALUE IF NOT EXISTS');

Bu işe yaramazsa, nasıl çok boyutlu dizi oluşur? A var_dump () yardımcı olabilir.

$subkey = 'B';
$arr = array(
	$subkey => array(
		'AB' => 'A1',
		'AC' => 'A2'
	)
);


echo current($arr[$subkey]);
next($arr[$subkey]);
echo current($arr[$subkey]);

Ben sık sık kullanın

foreach ($arr as $key=>$val) {
   $val['item'] /*$val is the value of the array*/
   $key         /*$key is the key used */
}

yerine

next ($ dizi) / akım ($ dizi)

Gerçek veri yapısı hakkında daha fazla bilmeden ben iki kez 4D dizi yapmaya çalıştım diyebilirim. İki kere daha sonra veri yapısı çok daha iyi bir yolu var olduğunu fark etti. Bu şekilde sınıfları kullanmak olmuştur.

Diğer tüm cevaplar senin sorunun olası çözümleri kadar attılar bunu yapamaz değilim ama burada size yardımcı olabilir çünkü ben derslere bakarak öneririm yok.