Nasıl PHP en kolay iki boyutlu bir diziyi bildirmek için?

6 Cevap php

Gibi:

declare int d[0..m, 0..n]

6 Cevap

Aşağıdaki eşdeğerdir ve bir iki boyutlu dizide sonuçları:

$array = array(
    array(0, 1, 2),
    array(3, 4, 5),
);

veya

$array = array();

$array[] = array(0, 1, 2);
$array[] = array(3, 4, 5);

Ayrıca dizinin dizin belirterek, bir ilişkisel dizi veya dizi gibi bir "hash-table" oluşturabilirsiniz.

$array = array(
    0 => array(
        'name' => 'John Doe',
        'email' => 'john@example.com'
    ),
    1 => array(
        'name' => 'Jane Doe',
        'email' => 'jane@example.com'
    ),
);

Eşdeğerdir

$array = array();

$array[0] = array();
$array[0]['name'] = 'John Doe';
$array[0]['email'] = 'john@example.com';

$array[1] = array();
$array[1]['name'] = 'Jane Doe';
$array[1]['email'] = 'jane@example.com';

Sadece beyan? Bunu yapmak zorunda değilsiniz. Sadece emin değişken var:

$d = array();

Diziler dinamik olarak yeniden boyutlandırılabilir, ve non-exsistant elemana bir şey yazmak için girişimde oluşturur (ve gerekirse tüm dizi oluşturur) vardır

$d[1][2] = 3;

Bu daha önceki bildirimler olmadan boyutların herhangi bir sayı için geçerlidir.

Öncelikle, PHP çok boyutlu diziler yoktur, bu diziler, diziler.

İkincisi, bunu yapacak bir fonksiyon yazabiliriz:

function declare($m, $n, $value = 0) {
  return array_fill(0, $m, array_fill(0, $n, $value));
}

Veya daha büyük diziler için, hepsi aynı değere sahip:

$m_by_n_array = array_fill(0, $n, array_fill(0, $m, $value);

ayarlandığında her şeyi ile $n dizisinin tarafından $m yaratacak $value.

Çözümü basit, "gitmek gibi doldurun" tür:

$foo = array(array());

Bu size [n] [n] burada n <= ∞ (tabii sizin sınırlı $ foo tutabilir esnek bir sahte iki boyutlu bir dizi alacak Her zamanki bellek boyutu kısıtlamaları, ama ederek) umarım anladınız. Bu, teoride, ihtiyacınız gibi birçok alt diziler oluşturmak için uzun olabilir.