2

我有以下代码没有按预期返回。我希望最终结果是一个字符串:

$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 个索引。可以内爆的数组的长度是否有限制?有解决办法吗?我在手册中找不到任何东西,但我已经彻底测试了这段代码,我相信错误一定是 on implode()

4

3 回答 3

1

我不知道是否有限制,但我想到的是你也在将数组转换为字符串。这不应该是 PHP 中的问题,但尝试将其称为内爆结果的不同变量?

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

// This gives it a different space 
于 2012-12-12T19:27:03.353 回答
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 上调用时应返回的内容

$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 构建的问题。我知道这听起来很疯狂,但在某些服务器上可能需要双引号。

参考:在旧生产服务器上工作的个人经验。

于 2012-12-12T18:52:54.760 回答
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);
于 2012-12-12T18:32:15.350 回答