PHP连接变为空

PHP连接变为空,php,string,concatenation,Php,String,Concatenation,当我运行这段代码时,大约在连接循环的中途,$xml变为null,并在连接循环的其余部分保持null。有人知道为什么会这样吗 $xml = ''; foreach($this->currentColumns['unknown'] as $column => $value) { $xml .= "<columnName>"; $xml .= $column; $xml .= "</columnName>\r\n"; } return $xml;

当我运行这段代码时,大约在连接循环的中途,$xml变为null,并在连接循环的其余部分保持null。有人知道为什么会这样吗

$xml = '';
foreach($this->currentColumns['unknown'] as $column => $value)
{
   $xml .= "<columnName>";
   $xml .= $column;
   $xml .= "</columnName>\r\n";
}
return $xml;
$xml='';
foreach($this->currentColumns['unknown']作为$column=>$value)
{
$xml.=“”;
$xml.=$column;
$xml.=“\r\n”;
}
返回$xml;

您必须在运行时打印出$column值。如果得到一个非常意外的列名,在为其创建xml字符串之前,可能必须在该条件下进行测试。

如果$this->currentColumns是xml解析的某种结果(以SimpleXML为例),则该数组的元素很可能不是真正的字符串,而是XMLElement对象,或者足够近的东西

尝试强制转换变量,以确保您正在链接字符串而不是对象:

$xml = '';
foreach($this->currentColumns['unknown'] as $column => $value)
{
   $xml .= "<columnName>";
   $xml .= (string)$column;  // <--- here is the trick
   $xml .= "</columnName>\r\n";
}
return $xml;
$xml='';
foreach($this->currentColumns['unknown']作为$column=>$value)
{
$xml.=“”;

$xml.=(string)$column;//如果我用$xml.=$column;替换循环中的内容,那么它就可以工作了。很抱歉,我应该提到这一点。但是,一旦我在循环的第一行或最后一行加回,它就会出现上面描述的问题。在这种情况下,请尝试将循环中的所有内容放在一行上,例如:$xml。”.strval($column)。“\r\n”strval()是一个很好的选择,感谢您指出。我以前使用过。感谢Nicolas,currentColumns是我在代码的更高级别上构建的一个数组。此函数所做的是我正在创建的xml字符串的一部分,将发布到API。但更糟糕的是,我添加了字符串转换,但它没有修复它。这是真的奇怪的是,我开始想到这里的PHP bug。我使用的是PHP5.3。你能发布“print_r($currentColumns)”返回的内容吗?嗯,你最终解决了这个问题了吗?如果是,怎么解决?