Ne bu php dizi ile yanlış?

6 Cevap 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);

Varlık biter

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 )

sonraki dizi parçasını ekleyerek yanlış gitmeye başlar nereye Ritish Columbia [Manitoba] olduğunu

Ne bu neden oluyor?

Ben bir açılan formunu doldurmak için bu dizi oluşturmaya çalışıyorum, ben dizi hakkında yeterli bilmiyorum, ben bile gerçekten içlerinden döngüsü edebilmek için iki dizi British Columbia eklemek gerekiyor?

Bu genellikle ne kullanın ama genellikle bu durumda ben genellikle 2 farklı değerleri göstermek iki altındaki değeri göstermek gerekiyor, ben belirtilen anahtarı ve değeri vardır

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

UPDATE

Ben kaynağını görüntülemek zaman etiketleri ile sarma değildi ve ben krom yayınlanmıştır nasıl geldi, aslında doğru

6 Cevap

Eğer gönderme konum dizi şartname veya çıkışı ile yanlış bir şey yok. Ben sadece bir şekilde print_r() sonuçlarını misreading konum şüpheleniyoruz.

Bir açılan yerleştirmek için olsa da, tüm ihtiyaç vardı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);

Belki de daha az kafa karıştırıcı olacak.

Ben bu sorun etiketleri var, dizi iyi olduğunu düşünüyorum.

Sen var:

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

Değeri değeri sona erdikten sonra, çünkü tırnak işaretleri olmadan işler karışıyor, hangi tarayıcı ilk uzay varsayar. Burada çıkan kötü HTML bulunuyor:

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

Bu deneyin:

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

Hangi bu oluşturur:

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

Eğer tek tırnak yerine çift kullanırsanız sorun olur mu?

İyi referans Array işlevini anlamak için => http://us2.php.net/manual/en/function.array.php

Ben bu görmüyorum:

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

Eğer varsa gerçekten ne gösterir bir şekilde sonuç çıktısı emin misiniz?

Burada gayet yazdırır.

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

Çıkışlar

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
)

Öncelikle, neden aynı değer olması için dizinin anahtarı ve değeri zorluyor? Eğer ilişkili açılan metin ve sayısal olarak bu indeks o izin gerekir gibi görünüyor.

(Çift tırnak amaçlarından biri) yok $ vars için aramak için PHP zorlamayın yüzden tek tırnak kullanarak olmalıdır rağmen İkincisi, tek vs çift tırnak, burada sorun değildir. Bu konuda orada makaleleri birçok: http://www.google.com/search?q=php+single+vs+double+quotes

Son olarak, ben de tüm kodunuzu çalıştırırken yaptım sonuç alamadım:

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
)