我有许多字符串,包含括号文字:
0 => string '[139432,97]' (length=18)
1 => string '[139440,99]' (length=18)
我需要创建[139432,97]
和[139440,99]
的字符串数组。
我已尝试使用json_decode()
,但是当它有效时,它会使用上述数据创建数组float
或int
,但我希望它们为{{1} }。
strings
答案 0 :(得分:1)
您可以在值周围加上双引号,例如
0 => string '["139432","97"]' (length=22)
1 => string '["139440","99"]' (length=22)
这种方式当你json_decode
时,它们应该是字符串。
修改强>
好的我认为你可以控制输入 - 如果没有那么一个简单的修剪和爆炸可以做:
explode(',', trim('[139432,97]', '[]'));
array(2) {
[0]=>
string(6) "139432"
[1]=>
string(2) "97"
}
那够了吗?
答案 1 :(得分:1)
只需将现在已经(json_decode)和@AlixAxel建议here的内容组合起来,就可以将这些值提取到字符串链接中:
$subject = '[139432,97]';
$convertedToArrayOfStrings = array_map('strval', json_decode($subject));
或
$convertedToArrayOfString = array_map(function($item){return (string) $item;}, json_decode($subject));
为了获得更好的性能,请参阅下面的评论:)
答案 2 :(得分:0)
为什么不尝试使用循环并使用explode函数:
$array = array('139432,97', '139440,99');
$finalArray = array();
$i = 0;
foreach ($array as $arr) {
$explode = explode(",", $arr);
$j = 0;
foreach ($explode as $exp) {
$finalArray[$i][$j] = (int)$exp;
$j++;
}
$i++;
}