这个php数组有什么问题?

这个php数组有什么问题?,php,arrays,Php,Arrays,结果是 $canada_territories = array("British Columbia" => "British Columbia", "Manitoba" => "Manitoba", "New Brunswick" => "New Brunswick", "Newfoundland and Labrador" => "Newfoundland and Labrador", "Nova Scotia" => "Nova Scotia", "North

结果是

$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);
ritish Columbia[Manitoba]在添加下一个数组项时开始出错

这是什么原因造成的

我正试图构建这个数组来填充一个下拉表单,我对数组的了解还不够,我真的需要将不列颠哥伦比亚省添加到数组中两次才能循环遍历它们吗

这是我通常使用的,但它通常有一个键和我设置的值,在这种情况下,我需要在下面显示两次值,我通常显示两个不同的值

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 )
foreach($state\u数组为$sid=>$statename){
打印“.$statename.”;
}
更新


我没有用标签包装,它显示了我是如何在chrome中发布的,当我查看源代码时,它实际上是正确的

如果使用单引号而不是双引号,会出现问题吗


理解数组函数的好参考=>

如果使用单引号而不是双引号,是否会出现问题


了解数组函数=>

的好参考。您发布的数组规范或输出没有问题。我怀疑你只是误读了
print\r()
结果

不过,要填充下拉列表,您只需:

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

也许这样会更容易理解。

您发布的阵列规范或输出没有问题。我怀疑你只是误读了
print\r()
结果

不过,要填充下拉列表,您只需:

foreach ($state_array as $sid => $statename) {
      print '<option value=' . $sid . $selected . '>' . $statename . '</option>';
}
也许这样就不会那么令人困惑了。

我看不出这一点:

$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);
$php
我看不出这一点:

$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);
$php

这里印的很好

$ 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
)

这里印的很好

$ 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
)

首先,为什么要强制数组的键和值为相同的值?似乎您应该删除关联的文本,让它以数字索引

其次,单引号和双引号不是这里的问题,尽管您应该使用单引号,这样就不会强迫PHP查找不存在的$vars(双引号的目的之一)。有很多关于这方面的文章:

最后,我根本没有得到运行代码时的结果:

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
)

首先,为什么要强制数组的键和值为相同的值?似乎您应该删除关联的文本,让它以数字索引

其次,单引号和双引号不是这里的问题,尽管您应该使用单引号,这样就不会强迫PHP查找不存在的$vars(双引号的目的之一)。有很多关于这方面的文章:

最后,我根本没有得到运行代码时的结果:

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
)
foreach($sid=>$statename的加拿大领土){
打印“.$statename.”“\n”;
}
这会造成混乱,因为如果没有引号,浏览器将假定值结束后的第一个空格。以下是由此产生的错误HTML:

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>
foreach($sid=>$statename的加拿大领土){
打印“{$statename}\n”;
}
这就产生了:

foreach ($canada_territories as $sid => $statename) {
  print "<option value=\"{$sid}\" $selected>{$statename}</option>\n";
}
不列颠哥伦比亚省 马尼托巴省 新不伦瑞克省 纽芬兰和拉布拉多 新斯科舍省 西北地区 努纳武特 安大略 爱德华王子岛 魁北克省 萨斯喀彻温省 育空地区
我认为数组很好,问题在于标签

你有:

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
)
foreach($sid=>$statename的加拿大领土){
打印“.$statename.”“\n”;
}
这会造成混乱,因为如果没有引号,浏览器将假定值结束后的第一个空格。以下是由此产生的错误HTML:

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>
foreach($sid=>$statename的加拿大领土){
打印“{$statename}\n”;
}
这就产生了:

foreach ($canada_territories as $sid => $statename) {
  print "<option value=\"{$sid}\" $selected>{$statename}</option>\n";
}
不列颠哥伦比亚省 马尼托巴省 新不伦瑞克省 纽芬兰和拉布拉多 新斯科舍省 西北地区 努纳武特 安大略 爱德华王子岛 魁北克省 萨斯喀彻温省 育空地区
Ahh我没有用标签包装,它显示了我是如何在chrome中发布的,当我查看源代码时,它实际上是正确的Ahh我没有用标签包装,它显示了我是如何在chrome中发布的,当我查看源代码时,它实际上是正确的是我更新了,这只是我的浏览器显示它的方式,没有预先标记,谢谢我更新了,这正是我的浏览器在没有预先标记的情况下显示它的方式,谢谢在这种情况下,因为你不需要键,那么你可以按照混沌的建议定义没有键的数组。在这种情况下,如果您使用foreach($array as$key=>$array),那么$key将是整数数组索引(因为如果您不指定键,PHP会自动添加基于零的数组索引)。在这种情况下,因为您不需要键,所以您可以按照chaos的建议定义没有键的数组。在这种情况下,如果使用foreach($array as$key=>$array),那么$key将是整数数组索引(因为如果不指定键,PHP会自动添加基于零的数组索引)。