2012-12-12 46 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