2009-07-30 94 views
0
$canada_territories = array("British Columbia" => "British Columbia", "Manitoba" => "Manitoba", "New Brunswick" => "New Brunswick", "Newfoundland and Labrador" => "Newfoundland and Labrador", "Nova Scotia" => "Nova Scotia", "Northwest Territories" => "Northwest Territories", "Nunavut" => "Nunavut", "Ontario" => "Ontario", "Prince Edward Island" => "Prince Edward Island", "Quebec" => "Quebec", "Saskatchewan" => "Saskatchewan", "Yukon" => "Yukon"); 
print_r($canada_territories); 

最终被这个php数组有什么问题?

Array ([British Columbia [Manitoba]] => British Columbia [Manitoba] => Manitoba [New Brunswick] => New Brunswick [Newfoundland and Labrador] => Newfoundland and Labrador [Nova Scotia] => Nova Scotia [Northwest Territories] => Northwest Territories [Nunavut] => Nunavut [Ontario] => Ontario [Prince Edward Island] => Prince Edward Island [Quebec] => Quebec [Saskatchewan] => Saskatchewan [Yukon] => Yukon) 

ritish哥伦比亚[马尼托巴]是它开始犹豫了,加入下一个数组项

是什么原因造成的一部分吗?

我想建立这个数组来填充一个下拉表单,我对数组还不够了解,我甚至真的需要将两个不列颠哥伦比亚数组添加到数组中以便能够循环遍历它们吗?

这是我经常使用,但它通常具有键和值,我设置,在这种情况下,我需要显示以下值的两倍,我通常表现出2个不同的值

foreach ($state_array as $sid => $statename) { 
     print '<option value=' . $sid . $selected . '>' . $statename . '</option>'; 
} 

UPDATE

我不是包装与标签,它显示了我如何张贴在镀铬,当我查看源代码,它实际上是正确的

+0

在这种情况下,因为你不需要钥匙那么你可以定义数组没有密钥,因为混乱。在这种情况下,如果使用foreach($ array作为$ key => $ array),那么$ key将是整数数组索引(因为如果不指定键,PHP会自动添加从零开始的数组索引)。 – 2009-07-30 22:17:58

回答

2

有什么不对您发布的数组规格说明,或输出。我怀疑你只是误解了print_r()的结果。

用于填充下拉,不过,你需要的是:

$canada_territories = array( 
    "British Columbia", 
    "Manitoba", 
    "New Brunswick", 
    "Newfoundland and Labrador", 
    "Northwest Territories", 
    "Nunavut", 
    "Ontario", 
    "Prince Edward Island", 
    "Quebec", 
    "Saskatchewan", 
    "Yukon", 
); 
print_r($canada_territories); 

也许这将是减少混乱。

0

我没有看到这一点:

$ php 
<?php 

print_r(array("British Columbia" => "British Columbia", "Manitoba" => "Manitoba", "New Brunswick" => "New Brunswick", "Newfoundland and Labrador" => "Newfoundland and Labrador", "Nova Scotia" => "Nova Scotia", "Northwest Territories" => "Northwest Territories", "Nunavut" => "Nunavut", "Ontario" => "Ontario", "Prince Edward Island" => "Prince Edward Island", "Quebec" => "Quebec", "Saskatchewan" => "Saskatchewan", "Yukon" => "Yukon")); 

Array 
(
    [British Columbia] => British Columbia 
    [Manitoba] => Manitoba 
    [New Brunswick] => New Brunswick 
    [Newfoundland and Labrador] => Newfoundland and Labrador 
    [Nova Scotia] => Nova Scotia 
    [Northwest Territories] => Northwest Territories 
    [Nunavut] => Nunavut 
    [Ontario] => Ontario 
    [Prince Edward Island] => Prince Edward Island 
    [Quebec] => Quebec 
    [Saskatchewan] => Saskatchewan 
    [Yukon] => Yukon 
) 

你确定你是在输出,显示你真正的你有什么办法你的结果?

+0

Ahh我没有用标签打包,它显示了我如何张贴在Chrome中,当我查看源代码时它实际上是正确的 – JasonDavis 2009-07-30 22:12:52

0

它在这里打印得很好。

<?php 
$canada_territories = array("British Columbia" => "British Columbia", "Manitoba" => "Manitoba", "New Brunswick" => "New Brunswick", "Newfoundland and Labrador" => "Newfoundland and Labrador", "Nova Scotia" => "Nova Scotia", "Northwest Territories" => "Northwest Territories", "Nunavut" => "Nunavut", "Ontario" => "Ontario", "Prince Edward Island" => "Prince Edward Island", "Quebec" => "Quebec", "Saskatchewan" => "Saskatchewan", "Yukon" => "Yukon"); 
print_r($canada_territories); 
?> 

输出

Array 
(
    [British Columbia] => British Columbia 
    [Manitoba] => Manitoba 
    [New Brunswick] => New Brunswick 
    [Newfoundland and Labrador] => Newfoundland and Labrador 
    [Nova Scotia] => Nova Scotia 
    [Northwest Territories] => Northwest Territories 
    [Nunavut] => Nunavut 
    [Ontario] => Ontario 
    [Prince Edward Island] => Prince Edward Island 
    [Quebec] => Quebec 
    [Saskatchewan] => Saskatchewan 
    [Yukon] => Yukon 
) 
0

首先,你为什么要强迫数组的键和值是相同的价值呢?看起来你应该放弃相关的文本,并让它以数字的方式进行索引。

其次,单引号和双引号在这里不是问题,虽然你应该使用单引号,所以你不要强迫PHP寻找不存在的$ vars(双引号的目的之一) 。很多上的文章在那里:http://www.google.com/search?q=php+single+vs+double+quotes

最后,我没有在所有正在运行的代码时,你做的结果:

Array 
(
    [British Columbia] => British Columbia 
    [Manitoba] => Manitoba 
    [New Brunswick] => New Brunswick 
    [Newfoundland and Labrador] => Newfoundland and Labrador 
    [Nova Scotia] => Nova Scotia 
    [Northwest Territories] => Northwest Territories 
    [Nunavut] => Nunavut 
    [Ontario] => Ontario 
    [Prince Edward Island] => Prince Edward Island 
    [Quebec] => Quebec 
    [Saskatchewan] => Saskatchewan 
    [Yukon] => Yukon 
) 
+0

是的,我更新了,这只是我的浏览器显示它没有预先标签的方式,谢谢 – JasonDavis 2009-07-30 22:14:39

1

我认为阵列是好的,它是属于标签问题。

您有:

foreach ($canada_territories as $sid => $statename) { 
    print '<option value=' . $sid . $selected . '>' . $statename . '</option>' . "\n"; 
} 

这打乱了,因为如果没有引号,值结束值之后,浏览器处于第一空间。这里是产生坏的HTML:

<option value=British Columbia>British Columbia</option> 
<option value=Manitoba>Manitoba</option> 
<option value=New Brunswick>New Brunswick</option> 
<option value=Newfoundland and Labrador>Newfoundland and Labrador</option> 
<option value=Nova Scotia>Nova Scotia</option> 
<option value=Northwest Territories>Northwest Territories</option> 
<option value=Nunavut>Nunavut</option> 
<option value=Ontario>Ontario</option> 
<option value=Prince Edward Island>Prince Edward Island</option> 
<option value=Quebec>Quebec</option> 
<option value=Saskatchewan>Saskatchewan</option> 
<option value=Yukon>Yukon</option> 

试试这个:

foreach ($canada_territories as $sid => $statename) { 
    print "<option value=\"{$sid}\" $selected>{$statename}</option>\n"; 
} 

产生这样的:

<option value="British Columbia" >British Columbia</option> 
<option value="Manitoba" >Manitoba</option> 
<option value="New Brunswick" >New Brunswick</option> 
<option value="Newfoundland and Labrador" >Newfoundland and Labrador</option> 
<option value="Nova Scotia" >Nova Scotia</option> 
<option value="Northwest Territories" >Northwest Territories</option> 
<option value="Nunavut" >Nunavut</option> 
<option value="Ontario" >Ontario</option> 
<option value="Prince Edward Island" >Prince Edward Island</option> 
<option value="Quebec" >Quebec</option> 
<option value="Saskatchewan" >Saskatchewan</option> 
<option value="Yukon" >Yukon</option>