首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内爆() [function.implode]

内爆() [function.implode]
EN

Stack Overflow用户
提问于 2011-12-23 18:46:12
回答 5查看 298关注 0票数 0

我得到一个错误警告: line () function.implode:在第13行中传递到/home/social/public_html/form_test.php中的无效参数--我不知道为什么会出现这个错误。

代码语言:javascript
复制
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>';
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-12-23 18:53:51

你不用牙套。当您检查is_array时,if语句仅适用于下面一行( for each)。for each也只应用于下面一行,然后if块结束。

这意味着当您使用implode()时,它位于if块之外,因此不能确保您的参数是数组。您应该查看亚历克斯的答案,并相应地调整代码,以便implode()行位于if块中。

您的代码现在的工作方式如下:

代码语言:javascript
复制
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>';

当它应该是这样:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2011-12-23 18:48:18

很难从你的缩进中看出,但你的问题可能是缺少支撑。您需要它们在条件或循环中运行多行代码:

代码语言:javascript
复制
if (is_array($_POST['wmeet'])) {
    foreach ($_POST['wmeet'] as $key => $value) {
        ...
        ...
    }
    ...
}

我猜想,由于缺少大括号,当wmeet不是数组时,内爆()正在运行。

票数 2
EN

Stack Overflow用户

发布于 2011-12-23 18:55:22

即使is_array($_POST['wmeet']条件为false,您的内爆函数也会被调用。使用支撑--你的if状态里面有那个

代码语言:javascript
复制
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语句,如下所示:

代码语言:javascript
复制
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>';
}

编辑:我刚刚注意到您正在尝试内爆一个关联数组。我认为内爆不适用于关联数组。

我在php.net (http://www.php.net/manual/en/function.implode.php#103861 by tl at magus )上找到了这段用于关联数组的代码,这对您可能很有用。

$assoc_array =数组(“Key1”=> "Value1","Key2“=> "Value2");

$new_array = array_map(create_function('$key,$value',‘$key$key.’.):“.$value.”;‘array_keys($assoc_array),array_values($assoc_array)’);

打印内爆($new_array);

将产生以下结果:

键1:值1#密钥2:值2#

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8619580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档