print_r输出中的空格

时间:2015-01-12 02:05:28

标签: php arrays

我在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
',

2 个答案:

答案 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代码来定义相关的数组。

正如您所提到的,如果某些数据是重复的,并且如果它不是预期的行为,那么您的代码中可能存在问题。您可以通过关注阵列的填充位置来解决这个问题。