循环中的字符串连接使结果为空

时间:2017-07-17 05:10:05

标签: php codeigniter

循环中有一个字符串串联的unicode字符串:

foreach ($posts as $post)
{
    $result .= $post['blah']
}

在循环中间的某个时刻,$ result变为空,尽管附加了更多字符串,但仍保持为空。令我更加困惑的是它的长度是多少? 0并且在添加更多字符串时增加。可能导致什么呢?

更新

我忘了提到我像这样初始化$ result

$result = '';

每个字符串都包含html,也可能包含一些特殊字符。我怀疑一些角色正在抛出php字符串,使它看起来是空的,但有长度。

3 个答案:

答案 0 :(得分:0)

尝试使用数组

而不是附加到字符串
$tmp=array();
foreach( $posts as $i => $post )$tmp[$i]=$post['blah'];

print_r( $tmp );

然后你应该能够更清楚地看到发生的事情,然后你可以implode

$tmp=array_filter( $tmp );
echo implode(' ',$tmp );

答案 1 :(得分:0)

$ result存在于循环范围内,因此在执行连接代码之前,循环中的每次迭代都会导致$ result被重新初始化。

在循环开始之前在循环外声明$ result。

答案 2 :(得分:0)

找到解决我问题的方法。它似乎是一个编码问题,一些字符串可能被错误地检测为非utf-8。对我有用的是强制每个字符串为utf-8。

$result = '';
foreach ($arr as $item) {
    $result .= iconv( 'UTF-8', 'UTF-8//IGNORE', $item);
}