1

我收到以下警告:

警告:implode() [function.implode]:传递的参数无效。

是什么原因造成的,我该如何解决?

$title = $_POST[photo_name_id];
if($title)
{
    foreach($title as $titled)
    {
        $judul[] = $titled;
    }
}

$titleds = "('".implode("'), ('",$judul)."')";

这是我的表格:

<tr>
    <td> 
        <?  
        $pm1= mysql_query("SELECT photo_name FROM photo_name WHERE photo_name_id = 1");
        $dpm1 = mysql_fetch_array ($pm1);echo"$dpm1[0]"
        ?> 
        <input type='hidden' name='photo_name_id[]' value='<?echo"$dpm1[0]"?>'> :  
    </td>
</tr>
<tr>
    <td> 
        <?  
        $pm1= mysql_query("SELECT photo_name FROM photo_name WHERE photo_name_id = 2");
        $dpm1 = mysql_fetch_array ($pm1);echo"$dpm1[0]"
        ?>
        <input type='hidden' name='photo_name_id[]' value='<?echo"$dpm1[0]"?>'> :  
    </td>
</tr>
4

3 回答 3

4

尝试添加:

$judul = array();

在初始化$judularray.

$judul = array();

$title = $_POST[photo_name_id];
if($title)
{
    foreach($title as $titled)
    {
        $judul[] = $titled;

    }
}

$titleds = "('".implode("'), ('",$judul)."')";
于 2012-08-01T08:20:02.780 回答
1

如果$title评估为假会发生什么?然后您的 if 语句将不会执行,并且不会创建数组。implode()因为传入了一个未设置的变量,所以会发出警告。它想要一个数组。

您应该初始化$judul为一个空数组或将内爆放在您的 if 中。

另外,引用您的数组键。不这样做是不好的做法,因为最初 PHP 假定它们是常量。

$title = $_POST['photo_name_id'];
if($title) {
    foreach($title as $titled) {
            $judul[] = $titled;
    }

    $titleds = "('" . implode("'), ('", $judul) . "')";
}

或者这个(更可取,因为$titleds将始终设置):

$title = $_POST['photo_name_id'];
$judul = array();

if($title) {
    foreach($title as $titled) {
            $judul[] = $titled;
    }
}

$titleds = "('" . implode("'), ('", $judul) . "')";

然而,这一切都提示了问题。为什么要复制$title到新数组中。为什么不这样做:

$title = $_POST['photo_name_id'];

if(!is_array($title)) {
    $title = array();
}

$titleds = "('" . implode("'), ('", $title) . "')";
于 2012-08-01T08:20:21.953 回答
-1

确保$judul是一个数组。PHP 内爆需要参数(字符串、数组)。看到这个

于 2012-08-01T08:20:33.543 回答