2012-12-12 50 views
2

我有下面的代碼沒有按照我的預期返回。我希望最終的結果將是一個字符串:PHP中implode函數的可能限制

$organizers = array_unique($organizers);  // this returns correctly 
$organizers = implode(', ', $organizers); // this returns nothing 
var_dump($organizers);      // no data appears here 
exit; 

array_unique()功能正常返回數據,我可以看到它返回數組。首先,$organizers數組是一個簡單的一維字符串數組,它們都有20個字符以下的小長度。我認爲這個問題可能是$organizers超過10,000指數。陣列的長度是否會受到破壞?有沒有解決方法?我在手冊中找不到任何內容,但我已經徹底測試了這些代碼,並且我認爲錯誤必須在implode()之上。

+0

您是否嘗試過使用類似但較小的陣列?字符串中是否有奇怪的字符? –

+5

在你的'implode()'之後加上一些調試輸出。你是否只是耗盡內存?你有錯誤登錄? – Brad

+1

@jakenoble,PHP將字符串視爲二進制數據。 「奇數字符」對PHP字符串函數沒有影響。 – Brad

回答

1

我不知道是否有限制,但我腦海裏想到的是,你也在將數組轉換爲字符串。這不應該是PHP中的問題,但可以嘗試將它作爲implode結果的另一個變量?

$organizers  = array_unique($organizers);  // this returns correctly 
$organizers_string = implode(', ', $organizers); // this returns nothing 

// This gives it a different space 
0

我不想認爲我說明了明顯的,但不內爆僅以字符串作爲參數?也許它應該是更像這樣的東西...

$organizers = array_unique($organizers); 

//I'm guessing what you wanted was an array of arrays? 
$neworganizers = array(); 
for($i = 0; $i < sizeof($organizers); $i++) 
{ 
    $neworganizers[$i] = implode(", ", $organizers); 
} 
print_r($neworganizers); 
+1

對不起!這很早,我感到困惑/混亂爆炸。 – rnirnber

1

編輯:如果由於某種原因,implode()仍然存在問題。

$organizers = array_unique($organizers); 
$neworganizers = ""; 
for($i = 0; $i < sizeof($organizers); $i++) 
{ 
    $neworganizers .= $organizers[$i]; 
    if($i != sizeof($organizers) - 1) 
    { 
     $neworganizers .= ", "; 
    } 
} 

// $ neworganizers現在的.implode()應該返回什麼叫上$主辦方

$organizers = array(); 
$organizers[0] = "value1"; 
$organizers[1] = "value2"; 
$organizers[2] = "value3"; 
$organizers[3] = "value3"; 
$organizers = array_unique($organizers);  // strips out last index 
$organizers = implode(', ', $organizers); // returns string of "value1, value2, value3" 
echo $organizers; 

這時候相當於似乎對writecodeline.com/php/工作

當我試圖用一個帶有特殊字符的字符串來爆炸/內爆時,我也遇到了較老的PHP版本的問題,並且它們被單引號封裝。我知道這聽起來很瘋狂,但在某些服務器上可能需要雙引號。

參考:在舊生產服務器上工作的個人經驗。

+0

讓我們知道它是否可行。也許如果你仍然遇到內爆問題,你可以看到上面要做的編輯。 – rnirnber