2009-07-30 8 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); 

finit par êtreQuel est le problème avec cette baie de 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) 

RITANNIQUE Columbia [Manitoba] est l'endroit où il commence à se tromper en ajoutant une partie de l'élément suivant du tableau

Ce qui est la cause? J'essaie de construire ce tableau pour remplir une liste déroulante, je ne sais pas assez sur le tableau, ai-je même besoin d'ajouter deux fois la Colombie-Britannique au tableau pour pouvoir les parcourir?

C'est ce que je l'habitude d'utiliser, mais il a généralement une clé et la valeur que je mets, sur ce cas, je dois montrer deux fois la valeur ci-dessous où je montre habituellement 2 valeurs différentes

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

MISE À JOUR

je n'étais pas avec des étiquettes d'emballage et il est apparu que je posté en chrome, quand je considère la source, il est en fait correcte

+0

Dans ce cas, puisque vous n'avez pas besoin de clés, alors vous pouvez juste définir le tableau sans clés comme le suggère le chaos. Dans ce cas, si vous utilisez foreach ($ array comme $ key => $ array), la clé $ sera l'index du tableau integer (puisque PHP ajoute automatiquement des index de tableau basés sur zéro si vous ne spécifiez pas les clés). –

Répondre

2

Il n'y a rien de mal à la spécification du tableau que vous affichez, ou la sortie. Je suppose que vous êtes en train de mal interpréter les résultats print_r().

Pour peuplant un menu déroulant, cependant, tout ce que vous avez besoin est:

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

Peut-être que ce sera moins confus.

0

Je ne vois pas ceci:

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

Êtes-vous sûr que vous êtes sortie vos résultats d'une manière qui vous montre vraiment ce que vous avez?

+0

Ahh je n'étais pas enveloppant avec étiquettes et il est apparu comment j'ai posté en chrome, quand je regarde la source, il est en fait correct – JasonDavis

0

Il imprime très bien ici.

<?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); 
?> 

Sorties

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

D'abord, pourquoi êtes-vous obligez la clé et la valeur du tableau à la même valeur? On dirait que vous devriez laisser tomber le texte associé et le laisser l'indexer numériquement. Deuxièmement, les guillemets simples et les guillemets doubles ne sont pas le problème ici, bien que vous devriez utiliser des guillemets simples pour ne pas forcer PHP à chercher $ vars qui ne sont pas là (un des buts des guillemets doubles) . beaucoup d'articles là-bas sur ce point: http://www.google.com/search?q=php+single+vs+double+quotes

Enfin, je n'ai pas eu les résultats que vous avez fait lors de l'exécution de code à tous:

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

oui je mis à jour, c'était juste la façon dont mon navigateur le montre sans pré-étiquettes, merci – JasonDavis

1

Je pense que le tableau est très bien, ce sont les balises qui sont les problème.

Vous avez:

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

qui salit parce que sans les guillemets, le navigateur prend la première place après que la valeur se termine la valeur. Voici le mauvais résultat 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> 

Essayez ceci:

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

qui génère ceci:

<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> 
Questions connexes