2011-08-06 4 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

오, 변해야한다고 생각합니다. $ travel = array ($ _ POST [ "travel"]); ~ $ 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는 두 번째 인수로 문자열을 취하고 $ _ post [ 'added']는 배열입니다. – yokoloko

+0

사용자는 쉼표로 구분 된 옵션을 입력하여 첫 번째 배열에 항목을 추가 할 수 있습니다. 제출을 클릭하면 이전 배열과 사용자의 입력이 하나의 정렬되지 않은 목록으로 표시됩니다. – 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>"; 
} 
?>