php pop dizi

5 Cevap php

Ben bu çıkışı olması gerekir

Array
(
   [id:>] => 0
   [isonline] => 0
   [userclass_id] => 3
)

ve ben bu kod ile bu çıktıyı alıyorum:

$pr = array('id:>'=>$id,'isonline'=>'0','userclass_id'=>'3');
print_r($params);

This is good. But i want to pop new elements to array one by one. While i am using this code:

$params = array();
array_push($params,array('userclass_id'=>'3'));  //  Members
array_push($params,array('isonline'=>'0')); // Online
array_push($params,array('id:>'=>$id));

Ben bu çıktıyı alıyorum:

Array
(
[0] => Array
    (
        [userclass_id] => 3
    )

[1] => Array
    (
        [isonline] => 0
    )

[2] => Array
    (
        [id:>] => 0
    )
)

Ben dinamik olarak yeni bir öğe eklemek istiyorum, ama aynı zamanda ilk çıkış olmasını istiyorum. Lütfen yardımcı için teşekkürler.

5 Cevap

Ilişkilendirilebilir bir dizi anahtar değerleri sırası önemli değil. Bu nedenle array_push veya array_unshift gerekmez. Yapmanız gereken tek şey istediğiniz değere (veya tersi) için bir anahtar ilişkilendirmek olduğunu. Yani dinamik $params diziye değerler eklemek için aşağıdaki yazardı.

$key = "my_id:2";
$value = "23";
$params[$key] = $value;

Evet, hiçbir kayması veya sadece köşeli parantez ve tüm iyi arasında $key ekleyin ... bastırıyor.

Siz dizinin sonuna eleman ekler array_push kullanıyor. Siz dizinin başlangıcına yeni öğeler prepend, hangi array_unshift kullanıyor olmalıdır.

Programlama php dizi sırasına dayanarak zaman ... array_pop, array_push, array_shift ve array_unshift arkadaşlarınız vardır. Onları biliyorum ... onları seviyorum ...

php manual entry for array_unshift

erenon cevabı muhtemelen daha iyi olduğunu, ancak really bir anda alt-dizisi tek bir öğe eklemek isterseniz:

$params = array();
array_unshift($params,array('userclass_id'=>'3'));  //  Members
$params[0]['isonline'] = 0;                         //  Online
$params[0]['id:>'] = $id;

Array_unshift nedenle yeni bir alt-dizisi always eleman 0 olacak, dizinin başında unsurları koyar Bu çalışıyor çünkü.

Elemanları sürekli yeniden numaralandırılır olmamak böylece performans nedenleriyle, onun yerine bunu yapmak isteyebilirsiniz:

$params = array();
$params[] = array('userclass_id'=>'3');  //  Members
end($params); // Move to the new element
$key = key($params); // Get the key of the new element
$params[$key]['isonline'] = 0;           //  Online
$params[$key]['id:>'] = $id;

What was happening is that you were pushing your a new array onto the current array instead of merging your new array into your old array. $params = array();

$params = array_merge($params, array('userclass_id' => 3));  //  Members
$params = array_merge($params, array('isonline'=>'0')); // Online
$params = array_merge($params, array('id:>' => $id));

Hatta daha iyisi, sadece bir kez array_merge aramak ve bunu tüm değerleri geçebilir

$params = array_merge($params, array('userclass_id' => 3), array('isonline' => '0'), array('id:>' => $id));

İstediğiniz çıktıyı almak için başka bir yolu sadece dizi doğrudan tuşları atama olurdu.

$params = array();
$params['userclass_id'] = 3;
$params['isoline'] = 0;
$params['id:>'] = $id;

Ve muhtemelen şeyler yapmanın en iyi yolu, dizi oluşturulduğunda sadece tuşları atamak için.

$params = array(
    'userclass_id' => 3,
    'isoline' => 0,
    'id:>' => $id
);

Nasıl hemen

$aParams[] = array(
    'userclass_id' => 3,
    'isoline' => 0,
    'id:>' => $id
);

Ben vs bireysel atama tabloların bir dizi girişi bu şekilde, tüm değerleri atayarak büyük bir hayranıyım.