我在PHP中使用数组,我注意到奇怪的输出,其中一些值有一行额外的空格,如下所示。
Array
(
[0] => Array
(
[token] => data
[tag] => data
)
[1] => Array
(
[token] => data
[tag] => data
)
等
这与具有额外空白空间的所有其他元素交替,直到元素5.然后它们都看起来像[1],直到它们到达具有奇怪的空白行的元素[9]。
有些数据也是重复的,但这并不影响两个元素是否会有相同的空白问题。
这会导致我的问题,还是会在我的代码中显示问题?为什么有些元素有这个额外的空格?
编辑:
我做了var转储,我发现有些标签后面有换行符。
e.g。
"tagexample
"
而不是
"tagexample"
这很令人困惑,因为正如我所说的,很多标签都是重复的,用于多个令牌,而且它似乎是随机的,会受到影响。
EDIT2:
我做了var export并且显示了与上面相同的结果,即
'tag' => 'data
',
答案 0 :(得分:2)
试试这个:
$arr = array(
array( 'token' => 'stuff 1',
'tag' => 'data 1
', ),
array( 'token' => 'stuff 2',
'tag' => 'data 2
', ),
array( 'token' => 'stuff 3',
'tag' => 'data 3
', ),
);
print "<pre>";
print_r($arr);
foreach($arr as $index => $sub) {
$arr[$index] = array_map('trim',$sub);
}
print "\n\n----------------------------------------------------\n\n";
print_r($arr);
/*
Array
(
[0] => Array
(
[token] => stuff 1
[tag] => data 1
)
[1] => Array
(
[token] => stuff 2
[tag] => data 2
)
[2] => Array
(
[token] => stuff 3
[tag] => data 3
)
)
----------------------------------------------------
Array
(
[0] => Array
(
[token] => stuff 1
[tag] => data 1
)
[1] => Array
(
[token] => stuff 2
[tag] => data 2
)
[2] => Array
(
[token] => stuff 3
[tag] => data 3
)
)
*/
也可以写成:
function trim_the_sub_array($sub) {
return array_map('trim',$sub);
}
$arr = array_map('trim_the_sub_array',$arr);
答案 1 :(得分:1)
print_r()是一个调试函数(http://php.net/print_r),如果你用它来进行调试,你不必担心空格。如果你将它用于输出(例如日志),var_export()(http://php.net/var_export)将是一个更好的选择,因为它打印实际的PHP代码来定义相关的数组。
正如您所提到的,如果某些数据是重复的,并且如果它不是预期的行为,那么您的代码中可能存在问题。您可以通过关注阵列的填充位置来解决这个问题。