Dizi anahtarlarını bulmak

5 Cevap php

PHP Şöyle bir dizi var:

$array[0]['width'] = '100';
$array[0]['height'] = '200';
$array[2]['width'] = '150';
$array[2]['height'] = '250';
  • Ben dizide kaç tane ürün bilmiyorum.
  • Bazı öğeler eksik [1] tuşuna açıklıyor silinebilir.

Ben böyle, bundan sonra yeni bir öğe eklemek istiyorum:

$array[]['width'] = '300';
$array[]['height'] = '500';

Her satır için yeni bir anahtar ekler Ancak yukarıdaki kod, işe yaramaz. Bu yukarıdaki iki satırları için aynı olmalıdır. Bunu çözmek için bir akıllı yolu?

Alternatif bir çözüm son anahtarı bulmak olacaktır. Ben 'end' işlevi çalışırken başarısız oldu.

5 Cevap

Bu anahtarları kaybetme bunu sakıncası yoksa, kolayca yeniden indeksleme sorunu çözmek olabilir.

$array = array_values($array);
$i = count($array);
$array[$i]['width'] = '300';
$array[$i]['height'] = '500';

Bunu yapmak istemiyorsanız Ancak, aynı zamanda bu kullanabilirsiniz:

$array[] = array(
    'width' => '300',
    'height' => '500'
);

Yeni bir dizi oluşturmak ve ikinci bir boyut olarak ekler hangi.

Bunu yapmak için doğru yolu:

$array[] = array(
  'width' => 200,
  'height' => 500,
);

aslında yeni bir dizi ekliyoruz çünkü $array.

Nasıl hakkında

$array[] = array("width" => "300", "height" => "500");

Ya da, sadece bütünlüğü ve açıklık için, geçici bir dizi kullanın:

$t=array();
$t['width']='300';
$t['height']='500';

Ve sonra ana diziye eklemek:

$array[]=$t;

Eğer tek bir açıklamada hem değerleri eklemek zaman yararlı başka bir çözüm:

$a = array();
$array[] &= $a; // Append a reference to the array, instead of a copy

$a['width'] = '300';
$a['height'] = '500';

Ama aynı zamanda dizideki son anahtarı alabilirsiniz:

$array[]['width'] = '300';

end($array); // Make sure the internal array pointer is at the last item
$key = key($array);  // Get the key of the last item

$array[$key]['height'] = 300;