PHP: kullanarak =>

3 Cevap

array() "kurucusunu" kullanmadan PHP => operatörü (?) Kullanmak için bir yolu var mı?

Spesifik olmak gerekirse, ben bir diziye sarma olmadan anahtarları ve değerleri bir listesini alacak bir işlev oluşturmak istiyorsanız:

function keysAndValues($items) {
    /* ... */
}

keysAndValues(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
);

Yerine

keysAndValues(array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
));

Bunu yapmak için bir yolu var mı?

3 Cevap

Bu argümanlar adlandırılır. Hayır, PHP mümkün değil. Çevrelerindeki bir dizi () kaydırmak zorunda olacak.

Sizi rahatsız eden dizi ama işlev içinde bir dizi ile çalışmak zorunda olduğu gerçeğini değil, deneyin

function my_function($array)
{
extract($array);
...
if (isset($number)) echo "Number is: ".$number;
}

işlevin kapsam içine seçeneklerini açmak için:

my_function(array("number" => "one")); // Will output "Number is: one"

o foreach(). Onlara kullanarak tek tek açma güçlük kaydeder

Eğer ne istediğinizi alabilirsiniz yakın şey, dinamik argümanları kullanarak gereğidir.

this tutorial/overview bir üs olarak, burada potansiyel bir çözüm sağlamak için kesmek kullanarak:

function keysAndValues() {
   for($i = 0 ; $i < func_num_args(); $i++) {
       list($key, $value) = explode('=>', func_get_arg($i));
       // Do something with the $key and $value
   }
}

Daha sonra böyle olacağını söyledi:

keysAndValues('key1=>value1','key2=>value2','key3=>value3');
keysAndValues('key1=>value1');

Temel olarak, parametrelerin herhangi bir miktarda olabilir ... onlar dinamik!

iyi, özellikle, '=>' operatörü bir dizi içinde anahtar, değer çiftini temsil eder, bu yüzden orada gerçekten no reason dizisi yapıcısı dışında kullanmak.

O bir dizide her öğe için anahtar ve değer kapmak için bir 'foreach' döngü gibi şeyler içinde kullanılır, dedi

foreach ($arr as $key=>$val)