我有一个字符串,其中包含用逗号分隔的数字。数字和逗号之间可能有也可能没有空格。我想将它转换为数组,我可以使用以下代码:
$string = '1, 2,3,';
$array = explode(',', $string);
但是,额外的不规则空格会进入数组值,最后一个逗号会导致空索引(请参见下图)。
如何删除它以便我只得到没有空格的干净值和数组中的最后一个空索引?
答案 0 :(得分:8)
只需使用array_map
,array_filter
和explode
,如
$string = '1, 2,3,';
print_r(array_map('trim',array_filter(explode(',',$string))));
<强>输出:强>
Array
(
[0] => 1
[1] => 2
[2] => 3
)
<强>解释强>
首先,我使用PHP的explode
函数将字符串拆分为数组
print_r(explode(',',$string));
导致
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] =>
)
因此我们需要使用array_filter
删除这些空值,如
print_r(array_filter(explode(',',$string)));
导致
Array
(
[0] => 1
[1] => 2
[2] => 3
)
现在最后一部分需要使用(extra space)
和array_map
trim
print_r(array_map('trim',array_filter(explode(',',$string))));
最后我们已经达到了我们所寻求的部分,即
Array
(
[0] => 1
[1] => 2
[2] => 3
)
答案 1 :(得分:1)
简单的解决方案是在原始字符串上使用/home/ubuntu/mahesh/node_tries/node_modules/q/q.js:155
throw e;
^
TypeError: Cannot read property 'req' of undefined
at send (/home/ubuntu/mahesh/node_tries/node_modules/express/lib/response.js:103:17)
at _fulfilled (/home/ubuntu/mahesh/node_tries/node_modules/q/q.js:834:54)
at self.promiseDispatch.done (/home/ubuntu/mahesh/node_tries/node_modules/q/q.js:863:30)
at Promise.promise.promiseDispatch (/home/ubuntu/mahesh/node_tries/node_modules/q/q.js:796:13)
at /home/ubuntu/mahesh/node_tries/node_modules/q/q.js:604:44
at runSingle (/home/ubuntu/mahesh/node_tries/node_modules/q/q.js:137:13)
at flush (/home/ubuntu/mahesh/node_tries/node_modules/q/q.js:125:13)
,并删除最后一个逗号(如果它与str_replace
一起存在,这样你就不会在数组末尾出现空白。< / p>
rtrim
结果:
$string = '1, 2,3,';
$string = rtrim($string, ',');
$string = str_replace(' ', '', $string);
$array = explode(',', $string);
print_r($array);
答案 2 :(得分:0)
首先对字符串执行以下操作 -
$string = str_replace(' ', '', $string);
然后使用爆炸。
答案 3 :(得分:0)
$string = '1, 2,3,';
$array = explode(',', $string);
$array = array_filter(array_map('trim', $array));
print_r($array);
array_map是一个非常有用的函数,它允许您将方法应用于数组中的每个元素,在本例中为trim
。
array_filter将为您处理空的最终元素。
答案 4 :(得分:-1)
这将修剪每个值并在一次操作中删除空值
$array = array_filter( array_map( 'trim', explode( ',', $string ) ) );