내 html 양식 (메서드-게시물)에서 여러 선택 요소를 따르고 있습니다. $ songs 배열을 변환하여 정렬 된 목록으로 변환하고 싶습니다.
<select name="songs" multiple>
<option>song 1</option>
<option>song 2</option>
<option>song 3</option>
<option>song 4</option>
<option>song 5</option>
<option>song 6</option>
<option>song 7</option>
<option>song 8</option>
<option>song 9</option>
<option>...</option>
</select>
다음 PHP 코드를 작성했습니다.
$songs = test_input($_POST["songs"]);
foreach ($songs as $song)
{
$songs .= "<li>$song</li>";
};
$songList = "Songs: <ol> $songs </ol> \r\n";
echo $songList;
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
하지만 그것은 나에게 오류를 준다 Invalid argument supplied for foreach()
누군가이 foreach()
루프에서 무엇이 잘못되었는지 알려주십시오.
String
대신 test_input () 함수가 반환되면 정렬 된 목록 Array
으로 변환하려면 어떻게해야 $songs
합니까?
다음이 작동합니다.
<?php
$songs = $_POST["songs"];
//$songs = Array("one","two","three");
foreach ($songs as $song)
{
$songStr = test_input($song);
$songsOut .= "<li>$songStr</li>";
};
$songList = "Songs: <ol> $songsOut </ol> \r\n";
echo $songList;
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
test_input()
요구는 오히려 배열 자체보다는, 배열의 각 항목에 별도로 호출 할 수 있습니다.
게시 데이터가 실제로 배열이라고 확신합니까? get 문자열을 사용하여 코드를 테스트했으며 (브라우저 표시 줄에 입력 할 수 있도록) 다음 구문이 필요합니다.
http://localhost/songs.php?songs[]=one&songs[]=two&songs[]=three
foreach
오류 메시지가 $ POST 연관 배열, 값의 배열을 반환이 디버그 도움이 될 것입니다 내 코드에서 두 번째 줄의 주석을하지를 차지한다. $ POST를 생성하는 코드를 게시하면 우리도 확인할 수 있습니다!
편집-여러 선택 요소의 이름을 변경하는 것이 저에게 효과적입니다.
<select name="songs[]" multiple>
<option>song 1</option>
<option>song 2</option>
<option>song 3</option>
<option>...</option>
</select>
참조 : 배열에 다중 선택
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다