循环中有一个字符串串联的unicode字符串:
foreach ($posts as $post)
{
$result .= $post['blah']
}
在循环中间的某个时刻,$ result变为空,尽管附加了更多字符串,但仍保持为空。令我更加困惑的是它的长度是多少? 0并且在添加更多字符串时增加。可能导致什么呢?
更新
我忘了提到我像这样初始化$ result
$result = '';
每个字符串都包含html,也可能包含一些特殊字符。我怀疑一些角色正在抛出php字符串,使它看起来是空的,但有长度。
答案 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);
}