2010-07-05 198 views
0

我使用以下代碼來填充的數組:陣列不正確填充

$number = count ($quantitys); 
    $count = "0"; 
    while ($count < $number) { 
     $ref[$count] = postcodeUnknown ($prefix, $postcodes[$count]); 
     $count = $count +1; 
    } 

postcodeUnknown從一個MySQL查詢返回的第一行,使用一個表前綴和從陣列命名郵政編碼的元素。 $ postcodes包含的字符串應該在每次循環時都返回一個不同的行。

哪,我期望創建一個類似於數組:

Array ([0] => 
     Array ([0] => some data [1] => more data) 
[1] => 
     Array ([0] => second row [1] => even more...) 
) 

但事實並非如此。相反,它會創建一個包含第一個結果的奇怪數組,直到條件滿足爲止,例如:

print_r($ ref)的簡化結果;

Array (
    [0] => Array ([0] => some data [1] => more data) 
) 
Array(
    [0] => Array (
     [0] => the first arrays content... 
     [1] => ...repeated over again until the loop ends 
    ) 
) 

而且我不明白爲什麼。任何人都比我更瞭解我。

+0

我只是格式化你的問題,並意識到第二陣列看起來不正確...你可以更新正確的輸出。謝謝 – Lizard 2010-07-05 17:32:27

+0

這就是問題的關鍵。它沒有正確格式化 – YsoL8 2010-07-05 17:37:08

回答

0

嘗試

$number = count ($quantitys); 
$count = "0"; 
while ($count < $number) { 
    $ref1[$count] = postcodeUnknown ($prefix, $postcodes[$count]); 
    $ref2[] = postcodeUnknown ($prefix, $postcodes[$count]); 
    $ref3[$count][] = postcodeUnknown ($prefix, $postcodes[$count]); 
    $count = $count +1; 
} 


echo "<pre>"; 
print_r($ref1); 
print_r($ref2); 
print_r($ref3); 
echo "</pre>"; 

嘗試查看是否有任何人獲得了您正在查找的輸出。

+0

這些都沒有奏效。我要嘗試去掉未知的郵政編碼功能並檢查它是否有問題。 – YsoL8 2010-07-05 18:43:44

+0

固定。我嘗試了你的建議 - 沒有運氣。然而,我然後嘗試改變計數($數量)來計數($ postcodes)。它不應該影響任何東西,因爲它們總是具有相同長度的數組,它無論如何都起作用。 – YsoL8 2010-07-05 18:51:49

+0

好的,如果unknownPostcode返回一個數組,那麼$ ref [$ count] = unknownPostcode()應該可以工作。 – Lizard 2010-07-05 18:53:15

0

呃,給postcodeUnknown添加一個print,並檢查它是否實際上通過不同的postcode或同一個東西?

function postcodeUnkown($a,$b){ 
    echo var_dump($a).var_dump($b); 
    //the rest 
} 

另外,爲什麼兩個不同的變量? ($數量和$郵政編碼)。

此外,您可能要替換while循環:

for($i=0;$i<$number;$i++){ 
    $ref[$i] = postcodeUnknown ($prefix, $postcodes[$i]);   
} 
+0

這並沒有解決格式不正確的數組問題。據我所知,問題的根源與$ count迭代有關。 雖然postcodeUnknown被調用了適當的次數,但無論循環運行了多少次,它似乎都會調用$ postcodes [0]。我正在使用MAMP進行開發。 – YsoL8 2010-07-05 17:47:58

0

您的變量數不應該是一個字符串,試試這個

$number = count ($quantitys); 
    $count = 0; 
    while ($count < $number) { 
     $ref[$count] = postcodeUnknown ($prefix, $postcodes[$count]); 
     $count = $count +1; 
    } 
+0

這不會是問題,因爲PHP仍然會增加一個字符串,通過將其轉換爲int – Lizard 2010-07-05 17:25:32

+0

選中此項以確保 - 無需更改。 – YsoL8 2010-07-05 17:49:54