我收到错误警告:implode()[function.implode]:第13行/home/social/public_html/form_test.php中传递的参数无效我不知道为什么我收到了这个错误。
if (is_array($_POST['wmeet']))
foreach ($_POST['wmeet'] as $key => $value)
$_POST['wmeet'][$key] = mysql_real_escape_string(stripslashes($value));
$wmeet = implode(" ",$_POST['wmeet']);
echo '<pre>'; print_r($wmeet); echo '</pre>';
答案 0 :(得分:2)
很难从你的缩进中看出来,但你的问题可能会丢失。您需要它们在条件或循环中运行多行代码:
if (is_array($_POST['wmeet'])) {
foreach ($_POST['wmeet'] as $key => $value) {
...
...
}
...
}
我猜测正在发生的事情是,当wmeet不是数组时,由于缺少大括号,implode()正在运行。
答案 1 :(得分:2)
您没有使用大括号。当您检查is_array
时,if
语句仅适用于以下行(for each
)。 for each
也仅应用于以下行,然后if
块结束。
这意味着当您使用implode()
时,它位于if
块之外,因此无法确保您的参数是数组。您应该查看Alex的答案并相应地调整您的代码,以便implode()
行位于if
区块内。
您的代码现在的功能如下:
if (is_array($_POST['wmeet'])) {
foreach ($_POST['wmeet'] as $key => $value) {
$_POST['wmeet'][$key] = mysql_real_escape_string(stripslashes($value));
}
}
$wmeet = implode(" ",$_POST['wmeet']);
echo '<pre>'; print_r($wmeet); echo '</pre>';
什么时候应该是这样的:
if (is_array($_POST['wmeet'])) {
foreach ($_POST['wmeet'] as $key => $value) {
$_POST['wmeet'][$key] = mysql_real_escape_string(stripslashes($value));
}
$wmeet = implode(" ",$_POST['wmeet']);
echo '<pre>'; print_r($wmeet); echo '</pre>';
}
答案 2 :(得分:2)
即使is_array($_POST['wmeet']
条件为false,您的内爆函数也会被调用。在if条件中使用你拥有的大括号
if (is_array($_POST['wmeet']))
{
foreach ($_POST['wmeet'] as $key => $value)
$_POST['wmeet'][$key] = mysql_real_escape_string(stripslashes($value));
$wmeet = implode(" ",$_POST['wmeet']);
echo '<pre>'; print_r($wmeet); echo '</pre>';
}
另外,您可能希望在大括号中添加foreach语句,如下所示:
if (is_array($_POST['wmeet']))
{
foreach ($_POST['wmeet'] as $key => $value)
{
$_POST['wmeet'][$key] = mysql_real_escape_string(stripslashes($value));
}
$wmeet = implode(" ",$_POST['wmeet']);
echo '<pre>'; print_r($wmeet); echo '</pre>';
}
编辑:我刚刚注意到您正在尝试内爆一个关联数组。我不认为implode适用于关联数组。
我在php.net上找到了这个代码(http://www.php.net/manual/en/function.implode.php#103861 by tl at magus dot dk),这对于可能对你有用的关联数组。
$ assoc_array = array(“Key1”=&gt;“Value1”,“Key2”=&gt;“Value2”);
$ new_array = array_map(create_function('$ key,$ value','return $ key。“:”。$ value。“#”;'),array_keys($ assoc_array),array_values($ assoc_array));
print implode($ new_array);
将输出:
Key1:Value1#Key2:Value2#
答案 3 :(得分:1)
您的$_POST['wmeet']
似乎是一个关联数组。
可能是这样的:
$new_array = array_map(create_function('$key, $value', 'return $key."=".$value;'), array_keys($_POST['wmeet']), array_values($_POST['wmeet']));
print implode(" ", $new_array);
这将使$ _POST ['wmeet']关联数组成为一个可以在以后内爆的普通数组。
它会打印类似
的内容key1=value1 key2=value2 ... keyN=valueN
答案 4 :(得分:1)
我不记得有可能对$ _POST值进行内爆。并检查这些括号
尝试
if (is_array($_POST['wmeet']))
{
$postWmeet = $_POST['wmeet'];
foreach ($_POST['wmeet'] as $key => $value)
{
$postWmeet[$key] = mysql_real_escape_string(stripslashes($value));
$wmeet = implode(" ",$postWmeet);
echo '<pre>'; print_r($wmeet); echo '</pre>';
}
}