2013-11-22 83 views
0

我有一个字符串1,2,3,4,5PHP字符串数组转换

我将其转换为一个PHP数组:$arr = explode(',', $myString);

然后我想从我的新阵呼应他们:

foreach ($arr as $value) { 
    echo $value; 
} 

问题 - 由于某种原因,它在我的阵列开始时添加了空白区域!因此,而不是1,我们的价值是1与它面前的空间。

为什么会发生这种情况,我怎么能摆脱它?

+1

你的字符串在开始时是否有空格?试试'$ arr = explode(',',trim($ myString));' – andrewsi

回答

1

在字符串的开头很可能有空格。

无论如何,你可以使用trim()

foreach ($arr as $value) 
{ 
    echo trim($value); 
} 

或者你可以在爆炸点使用它:

$arr = explode(',', trim($myString)); 
+0

只是一个注释。代码中的foreach循环实际上并不会修改该值。您需要通过引用传递'$ value'才能做到这一点。 –

+0

不知道我理解你的评论? 'trim()'在循环内部,紧跟在'echo'之后... – BenM

+0

在你的答案的第一部分中,你实际上并没有修改'$ arr' - 只是打印修剪后的值。使用这段代码,您将传递相同的旧字符串到'explode()'函数,并且结果与以前相同。 –

4

,如果你的字符串包含在开头或结尾的空白可能发生这种情况。 explode()函数只会将字符串分割给定的分隔符,而不会神奇地处理空白。您可以使用array_map()修剪所有的数组元素的空白:

$arr = explode(',', $myString); 
$arr = array_map('trim', $arr); 

或者你可以使用explode()使用正则表达式之前更换空格(或str_replace(),视情况而定):

$myString = ' 1,2,3,4,5 '; 
$myString = preg_replace('/\s+/', '', $myString); 

这将删除所有的空白字符串将只包含数字和逗号(假设这是你想要的)。

+0

谢谢这有助于我:)使用array_map :) – Darline