我的HTML代码中有几个这样的:
<input class="table" type="checkbox" name="interest[]" value="finger food" />
这在我的PHP代码中:
$checkboxes = stripslashes($_POST['interest']);
//process the checkboxes
foreach ($checkboxes as $value) {
$selectedChkbx .= $value . ", ";
}
我得到了:
警告:为foreach()foreach()
提供的参数无效
并且我的$selectedChkbx
变量未获取任何值。有谁知道我做错了什么?
答案 0 :(得分:3)
stripslashes
可能会将数组转换为字符串。这意味着$checkboxes
是一个字符串,您不能在foreach
中使用字符串。
对stripslashes
内的数组的每个值应用foreach
:
foreach ($_POST['interest'] as $value) {
$selectedChkbx .= stripslashes($value) . ", ";
}
或使用array_map
对数组的每个值应用函数:
$checkboxes = array_map('stripslashes', $_POST['interest']);
然后,您可以使用implode
加入值:
$selectedChkbx = implode(',', $checkboxes);
如果您的stripslashes
代码要恢复Magic Quotes的效果,最好尝试disable them。
答案 1 :(得分:2)
只是摆脱了这个无用的striplashes功能
我只用一行就可以了:
$selectedChkbx = implode(", ",$_POST['interest']);
答案 2 :(得分:0)
你有这个:$checkboxes = stripslashes($_POST['interest']);
stripslashes函数会将数组$ _POST ['interest']转换为空字符串。
相反,你应该只是:
foreach ($_POST['interest'] as $value) {
$selectedChkbx .= stripslashes($value) . ", ";
}
此外,不推荐使用魔术引号。建议您将其关闭。
答案 3 :(得分:0)
使用以下方法将其转换为字符串:
$checkboxes = stripslashes($_POST['interest']);
我敢打赌它会将名为“Array”的值指定为字符串。如果要从整个数组中删除斜杠,请使用array_filter()。但是,在服务器上禁用magic_quotes会更明智,因此您不必strip_slashes
。
$checkboxes = array_filter($_POST['interest'], 'stripslashes');
我强烈建议你研究一下神奇的报价问题并将问题解决到核心。
答案 4 :(得分:0)
Stripslashes会将返回值强制转换为字符串。在这里回答的人仍然没有“花花公子只是摆脱striplashes”或“去禁用魔法引言!!”的奢侈品。
如果您或您的朋友需要使用striplashes并且出于某种原因使用魔术引号(可能是共享主机),那么应该为数组包装stripslashes函数。
例如:
function myStripper($value) {
if(is_array($value)) {
foreach($value as $newValue) {
return myStripper($newValue);
}
} else {
return stripslashes($value);
}
}
$checkboxes = myStripper($_POST['interest']);
//process the checkboxes
foreach ($checkboxes as $value) {
$selectedChkbx .= $value . ", ";
}
应该做的伎俩并递归剥离你的变量。
答案 5 :(得分:-1)
的stripslashes($ _ POST [ '兴趣']);
stripslashes对数组不起作用!
这样做:
$checkboxes = $_POST['interest'];
//process the checkboxes
foreach ($checkboxes as $value) {
$selectedChkbx .= stripslashes($value) . ", ";
}
回答你的意见:
$array = array('zero', array('one', array('two', 'three', 'four'), 'five'), 'six', 'seven', array('eight'));
echo r_implode(", ", stripslashes_deep($array));
# code from http://ch.php.net/manual/en/function.stripslashes.php
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);
return $value;
}
# code from http://php.net/manual/en/function.implode.php
function r_implode( $glue, $pieces )
{
foreach( $pieces as $r_pieces )
{
if( is_array( $r_pieces ) )
{
$retVal[] = r_implode( $glue, $r_pieces );
}
else
{
$retVal[] = $r_pieces;
}
}
return implode( $glue, $retVal );
}
这会给你:
zero, one, two, three, four, five, six, seven, eight
修改强> 将个人递归功能替换为更优雅的功能;)