PHP foreach循环不工作
我的html表单中有以下多个select元素(method-post)。我想将$songs数组转换为有序列表中的转换PHP foreach循环不工作,php,foreach,Php,Foreach,我的html表单中有以下多个select元素(method-post)。我想将$songs数组转换为有序列表中的转换 <select name="songs" multiple> <option>song 1</option> <option>song 2</option> <option>song 3</option> <option>song 4</option>
<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>
歌曲1
歌曲2
歌曲3
歌曲4
歌曲5
歌曲6
歌曲7
歌曲8
歌曲9
...
我编写了以下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;
}
$songs=test_输入($_POST[“songs]”);
foreach($songs作为$song)
{
$songs.=“$song ”;
};
$songList=“Songs:$Songs\r\n”;
echo$歌曲列表;
功能测试输入($data)
{
$data=修剪($data);
$data=条带斜杠($data);
$data=htmlspecialchars($data);
返回$data;
}
但是它给了我一个错误为foreach()提供的无效参数
有人请告诉我这个foreach()
循环出了什么问题
如果函数test_input()返回的是String
而不是Array
,那么我应该如何将$songs
转换为有序列表 这是因为在循环过程中您正在更改$songs
。应为html字符串使用不同的变量:
$songs = test_input($_POST["songs"]);
$html = '';
foreach ($songs as $song)
{
$html .= "<li>$song</li>";
}
$songList = "Songs: <ol> $html </ol> \r\n";
echo $songList;
$songs=test_输入($_POST[“songs]”);
$html='';
foreach($songs作为$song)
{
$html.=“$song ”;
}
$songList=“歌曲:$html\r\n”;
echo$歌曲列表;
测试输入($\u POST[“歌曲])代码>应该是一个数组,您的代码是完美的<代码>测试输入($_POST[“歌曲])代码>但应返回一个数组
使用函数is_array()
$songs=array('a','b');
if(is_数组($songs))
{
foreach($songs作为$song)
{
$songs.=“$song ”;
}
}否则{
echo“它不是数组”;
}
$songList=“Songs:$Songs\r\n”;
echo$songList;`//输出:歌曲:数组a b
以下各项应起作用:
<?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;
}
?>
foreach
错误消息将说明$POST-associate数组没有返回值数组,取消注释代码中的第二行将有助于调试。如果您发布生成$post的代码,我们也可以检查它
编辑-更改“多重选择”元素的名称似乎对我有效:
歌曲1
歌曲2
歌曲3
...
参见:var_dump($songs);在foreach循环之前,让我们知道结果destest\u input()
返回一个数组?你能显示你选择的HTML表单吗?如果看不到test\u input
的定义,我们无法回答这个问题。你应该删除代码>位于foreach循环的末尾括号中foreach
对数组的副本进行操作,尽管这不是一个特别好的做法,但您可以在循环中更改变量,而不会产生负面影响。我已经更新了代码。还是没有working@itsme请参见在帖子正文中编辑
<?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;
}
?>
http://localhost/songs.php?songs[]=one&songs[]=two&songs[]=three
<select name="songs[]" multiple>
<option>song 1</option>
<option>song 2</option>
<option>song 3</option>
<option>...</option>
</select>