2012-04-15 5 views
-1

私は、リンクとリンクのタイトルを含む非常に単純な配列を持っています。値を印刷すると、何らかの理由で「3番目」の値が失われます。私は3番目の値が存在することを確認するために二重チェックをしています。私は何が起こっているのか理解していないのですか?どんな提案も素晴らしいだろう!foreach文は配列内のすべての値を返さない?

<?php 

$resources = array(
    "$link" => "$link_name", 
    "$link1" => "$link_name1", 
    "$link2" => "$link_name2", 
    "$link3" => "$link_name3", 
    "$link4" => "$link_name4" 
); 

foreach ($resources as $resources_link => $resources_name) { 
    echo "<a href=\"$resources_link\">$resources_name</a><br>"; 
} 
?> 

アウトプットは、次のようになります。(第三値がありません) リンク1 リンク2 LINK4 Link5

+0

を変数にする必要があります。 – Michelle

+0

配列内のすべての変数にはどのような値がありますか? –

+0

なぜ変数を二重引用符で配列に格納する必要がありますか? – Michelle

答えて

0

私はそれを少し変更し、あなたのコードを試してみましたが、すべての5つのリンクを参照することができます

<?php 

$resources = array(
"1"=>"A", 
"2"=>"B", 
"3"=>"C", 
"4"=>"D", 
"5"=>"E" 
); 

foreach ($resources as $resources_link => $resources_name) { 

echo "<a href=\"$resources_link\">$resources_name</a><br>"; 
} 

?> 
2

このコードを試しても問題なく完全に動作します。

<?php 

$link = "www.google.com"; 
$link_name = "Google"; 

$link1 = "www.google1.com"; 
$link_name1 = "Google1"; 

$link2 = "www.google2.com"; 
$link_name2 = "Google2"; 

$link3 = "www.google.com3"; 
$link_name3 = "Google3"; 

$link4 = "www.google.com4"; 
$link_name4 = "Google4"; 

$resources = array("$link"=>"$link_name","$link1"=>"$link_name1","$link2"=>"$link_name2","$link3"=>"$link_name3","$link4"=>"$link_name4"); 
foreach ($resources as $resources_link => $resources_name) { 

echo "<a href=\"$resources_link\">$resources_name</a><br>"; 
} 
0

変数$linkは定義されていません。単なる文字列の場合は、二重引用符を一重引用符で置き換えます。以下のような :

<?php 

$resources = array(
'$link'=>'$link_name','$link1'=>'$link_name1','$link2'=>'$link_name2','$link3'=>'$link_name3','$link4'=>'$link_name4'); 

foreach ($resources as $resources_link => $resources_name) { 

echo "<a href=\'$resources_link\'>$resources_name</a><br>"; 
} 
?> 
+0

皆様のご協力をいただきありがとうございます。何らかの理由で、データベースから来る変数に何かが起こっていて、配列が値引き/リストを降順でスキップしていました。私はいくつかのif文を使う必要がなくなりましたが、同じ結果を得ることができました。 – Rubble

0

私は$ LINK_NAME、$リンク1、$ link_name1、...特殊なHTML文字を持って、$リンクの価値を疑います。あなたのループを変更しよう:

foreach ($resources as $resources_link => $resources_name) { 
    echo "<a href=\"" . htmlentities($resources_link) . "\">" . htmlentities($resources_name) . "</a><br>"; 
} 

にhtmlentitiesを(が)あなたのテキストをサニタイズしますので、それは任意のHTMLタグを中断されません。

関連する問題