2010-07-05 158 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