2011-08-06 8 views
0

以前に作成した配列にユーザー入力を追加しようとしましたが、array_mergeを使用しています。しかし、私は、順序のないリストとして全体の新しい配列をエコーするのに問題があります。ユーザーのエントリは正しく処理されていますが、元のアレイは順序付けられていないリスト内に「アレイ」として表示されています。ユーザー入力を配列に追加する

<?php 
$travel = array("Automobile", "Jet", "Ferry", "Subway"); 

foreach ($travel as $t) 
    { 
    echo "<ul>"; 

    echo "<li>$t</li>"; 

    echo "</ul>"; 

    } 
?> 

<form action="arrays.php" method="post"> 
<input type="text" name="added" /> 
<?php 

foreach ($travel as $t) 
{ 
echo "<input type=\"text\" name=\"travel[]\" value=\"$t\" />";  
} 

?> 
<input type="submit" name="submit" value="Add More!" /> 
</form> 

<?php 

$travel = array($_POST["travel"]); 

$added = explode(",", $_POST["added"]); 

$travel = array_merge($travel, $added); 

echo "<p> Here is the list with your additions:</p>"; 

echo "<ul>"; 

foreach ($travel as $t) 
{ 
echo "<li>$t</li>"; 
} 

echo "</ul>"; 
?> 
+0

これは、最初の$走行変数から「アレイ()」を除去し、場合とそれに先行することによって解決されています(isset($ _ POST ["submit"]))。 私はコードを回答として掲示します...フィードバックに感謝します皆さん:) – dmubu

答えて

0

array_merge()で作成された新しい配列に新しい変数名を使用してみてください。私はあなたが格納している配列を変更する問題に遭遇するかもしれないと思う。

+0

残念ながら、そのアプローチの運命は...他のアイデアですか? – dmubu

+0

オハイオ州、私はちょうど変更する必要があると思います $旅行=配列($ _ POST ["旅行"]); 〜$ travel = $ _POST ["travel"]; (新しい変数名の使用に加えて)。 $ _POST ["travel"]は既に配列です。 –

+0

これを行うと、第1セグメントが配列ではないことを示す警告が表示されます。 – dmubu

0
$travel = array($_POST["travel"]); 

$travel = $_POST['travel']; 
+0

\ "travel \" without []は配列の最後の値だけを出力します。 – dmubu

+0

申し訳ありません。$ added = explode( "、"、$ _POST ["added"]); ここで何をしようとしていますか? explodeは2番目の引数として文字列を取り、$ _post ['added']は配列 – yokoloko

+0

ユーザはカンマで区切ったオプションを入力することで最初の配列に項目を追加できます。送信がクリックされると、古い配列とユーザーの入力は1つの順序付けられていないリストとして表示されます。 – dmubu

0

問題は、このように解決しなければならない。

if (isset($_POST["submit"])) 
{ 
$travel = $_POST["travel"]; 
$added = explode(",", $_POST["added"]); 
$travel = array_merge($travel, $added); 


echo "<p> Here is the list with your additions:</p>"; 

echo "<ul>"; 

foreach ($travel as $t) 
    { 
    echo "<li>$t</li>"; 
    } 

echo "</ul>"; 
} 
?> 
関連する問題