从包含括号文字的字符串创建php数组

时间:2015-06-09 13:48:34

标签: php

我有许多字符串,包含括号文字:

0 => string '[139432,97]' (length=18)
1 => string '[139440,99]' (length=18)

我需要创建[139432,97][139440,99]的字符串数组。

我已尝试使用json_decode(),但是当它有效时,它会使用上述数据创建数组floatint,但我希望它们为{{1} }。

strings

3 个答案:

答案 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++;
}