2011-07-07 25 views
28

Ben diziler dinamik olarak oluşturulan olduğunu biliyoruz ve onları vaktinden yaratıyor değil gerçekten gerekli, ama nasıl bir 2B dizi ile bunu yapar? Aynı yol?PHP boş 2D dizilerinin oluşturulması?

(for$j) 
{ 
for($i) 
    { 
    $array[j][i] = "data"; 
    } 
} 

Böyle bir şey mi? Elbette ki döngüler için gerçek.

+3

boş 2 boyutlu dizi ... '$ dizi = array (array()); Bu şekilde Eminseniz boş bir dize n * m diziyi doldurmak istiyorum, doğru görünüyor' – JamesHalsall

+0

zamanlar. –

+1

Downvotes ile anlaşma ne olduğunu bilmiyorum. Baktım ve cevabı bulamadım, o yüzden sordum. Php kullanmayı öğrenmeye çalıştığım için özür dilerim. – Joshua

cevap

39

, 2D boyutlu dizi olarak oluşturulabilir:

<?php 
    $emptyArray = array(array()); 
?> 

Veya PHP 5.4 itibariyle de kullanabilirsiniz:

<?php 
    $emptyArray = [[]]; 
?> 
+0

Teşekkür ederim. Bütün ihtiyacım olan buydu. – Joshua

+5

@Joshua Sorun değil. Sanırım insanlar, sorunun arkasındaki mantığı anlamadıkları için reddettiler. Reddetmek için iyi bir sebep değil. Yorumlar budur. Soru sormaya devam et ... :) –

+8

Downvotes, öğrenmeye çalışmaktan beni alıkoyamayacak. – Joshua

2

PHP documentation daima temel soru bu tür için başlamak için iyi bir yoldur.

mutlak basit olarak
<?php 
$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42)); 

echo $arr["somearray"][6]; // 5 
echo $arr["somearray"][13]; // 9 
echo $arr["somearray"]["a"]; // 42 
?> 
+5

Çok boyutlu dizi belgelerine baktım, boş bir tane oluşturmak için örnek yok. – Joshua

1

size neyi belirtebilir misiniz yapmaya çalışıyorlar? yapabilirsiniz foreach fonksiyonu

$ary=array("subarr" => array("foo","bar")); 

foreach($ary as $a){ 
    foreach($a as $ary_sub){ 
    echo $ary_sub; 
    } 
} 

veya

foreach($ary["subarr"] as $key=>$subval){ 
echo $subval; 
} 
21

Sen geleneksel anlamda PHP'de bir 2d dizi oluşturmaz ile çok boyutlu diziler döngü. yaklaşık $a = array(array()); basitçe şu diziyi oluştururken aslında yukarıda

öneriler: Dolayısıyla

$a = array(
    0 => array() 
); 

, $a[0][0] = 'test'; aşağıdaki sonuç elde edilir: Çalışır gibi ilk bakışta

$a = array(
    0 => array(
     0 => 'test' 
    ) 
); 

, görünüşe ama aslında, bu hala 2d dizisi değil. Eğer 2 satır (dizin 1) kullanmaya çalıştığınızda , bu noktada, PHP bir uyarı atmak olacaktır. Ör: $a[1] şey (? array(array()) basitçe 0 dizininde bir dizi oluşturarak unutmayın) içermediği için

$a[1][0] = 'test2'; 

budur.

Çalışması için, $a[1] = array();'u tekrar yapmalısınız ya da endekslerden kaçınmak istiyorsanız, $a[] = array(); yapabilirsiniz.


Örnek yukarıdaki kodu bir rasgele sayı 5x3 "2d dizi" oluşturur

$a = array(); // array of columns 
for($c=0; $c<5; $c++){ 
    $a[$c] = array(); // array of cells for column $c 
    for($r=0; $r<3; $r++){ 
     $a[$c][$r] = rand(); 
    } 
} 

.

+0

2-boyutlu dizileri kullanırken boş girdilerimin nereden geldiğini merak ettim. Değiştirilmiş $ arr [] = dizi(); fonksiyonun başında $ arr [$ id] = dizi(); nerede kullanılır ve her şey tekrar iyi – RST

+0

Teşekkür ederim !!!! Mükemmel cevap! – lopata

2

ben metin dosyalarını satırları işlemek için boş bir dizi oluşturmak istiyorsanız, sadece $ dizi = dizi kullanmak();

1
// dynamic 2D array 

$twoD = array(array()); 
$val = 0; 

// fill the array 
for($r = 0; $r < 4; $r++) { 
    for($c = 0; $c < 4; $c++) 
     $twoD[$r][$c] = $val++; 
} 

// print the current value of $val 
echo $val."<br/>------------------<br/>"; 

// print the array 
for($r = 0; $r < 4; $r++) { 
    for($c = 0; $c < 4; $c++) 
     echo $twoD[$r][$c]; 
    echo "<br/>"; 
} 
2

"Dizi (dizi())" ifadesi, ilk konumda "boş" öğeye sahip bir 2D dizi oluşturacaktır. Gerçekten boş bir 2D dizi oluşturmak için bunun kaldırılması gerekiyor.

<?php 
    $emptyArray = array(array()); // Creates a 2D array with one empty element in $emptyArray[0] 
    array_pop($emptyArray);  // Pops element[0] off the array 
?> 
+0

Bunu paylaştığınız için teşekkür ederiz. [0] 'da boş bir eleman nasıl yarattığımı anlamaya çalışırken delirdiğimi sandım. – radleybobins