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();

$judulとして初期化する前array

$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

$titlefalseと評価された場合はどうなりますか?次に、ifステートメントは実行されず、配列は作成されません。implode()未設定の変数が渡されるため、警告が表示されます。配列が必要でした。

$judul空の配列に初期化するか、ifにimplodeを配置する必要があります。

また、配列キーを引用します。最初は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 implodeにはパラメーター(文字列、配列)が必要です。これを参照してください。

于 2012-08-01T08:20:33.543 に答える