我有以下代码没有按预期返回。我希望最终结果是一个字符串:
$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()
.
是否有限制,但我想到的是你也在将数组转换为字符串。这不应该是 PHP 中的问题,但尝试将其称为不同的变量以获得内爆的结果?
$organizers = array_unique($organizers); // this returns correctly
$organizers_string = implode(', ', $organizers); // this returns nothing
// This gives it a different space
编辑:如果由于某种原因 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 构建的问题。我知道这听起来很疯狂,但在某些服务器上可能需要双引号。
参考:在较旧的生产服务器上工作的个人经验。
我不想认为我在陈述显而易见的事情,但内爆不是只以字符串作为参数吗?也许它应该更像这样...
$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);