2012-08-01 37 views
1

我收到以下警告:警告:破滅()

警告:破滅()[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> 
+3

顯然'$ judul'不是一個數組,這意味着'$ title'的計算結果爲'false'。找出爲什麼。 (另外,使'$ judul'成爲'$ title'的副本有什麼意義?您已經擁有了原版!) – Jon 2012-08-01 08:20:25

+0

@mikeymeows感謝您的反饋並編輯我的問題mikeymeows。你是對的,我仍然在學習php和sory爲我的英語 – 2012-08-01 09:05:39

回答

1

如果$title的計算結果爲false會發生什麼?然後你的if語句將不會執行,並且數組將不會被創建。 implode()會因爲傳入未設置的變量而發出警告,它需要一個數組。

您應該將$judul初始化爲一個空數組,或將implode放置在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) . "')"; 
+0

我只是一個新手男人..我仍然在學習... heheheh感謝您的反饋 – 2012-08-01 08:30:51

+0

@MeijuNainggolan基本上,如果你用最後的代碼塊替換你當前的代碼,一切都應該沒有任何警告。 – 2012-08-01 08:32:05

+0

好吧生病嘗試 – 2012-08-01 08:35:36

4

嘗試添加:

$judul = array(); 

之前初始化$judularray

$judul = array(); 

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

    } 
} 

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

我嘗試,並警告已離開,謝謝你.. – 2012-08-01 08:23:30

+0

歡迎您,請驗證我的回答:) – Aelios 2012-08-01 08:24:46

+0

如果你的優化代碼,如果$ title是不是數組,它仍然是一個警告。另外,你有一個錯字。你輸入'$ title'而不是'$ title'。 – 2012-08-01 08:29:09

0

確保$judul是一個數組。 PHP implode需要參數(字符串,數組)。見this