PHP如何将此选项字符串拆分为此类数组

时间:2014-06-06 11:23:34

标签: php ajax arrays string split

这个字符串来自ajax GET,我决定选择“field”。

字符串:宽度(400),高度(200),年龄(99),字符串(测试)

如何将其拆分为这种数组:

$myArray =
[
   'width' => 400,
   'height' => 200,
   'age' => 99,
   'string => 'test'
];

请注意整数必须是整数,以便于计算。

4 个答案:

答案 0 :(得分:2)

为什么不改变发送数据的方式?

$.ajax({
  dataType: "json",
  url: url,
  data: {width:400, height: 200, age: 99, aString: "test"},
  success: success
});

在PHP中处理起来会更容易。让自己头疼:)

答案 1 :(得分:2)

正则表达式可能会得到改善(这不是我的强项),但你可以这样做:

$string = 'width(400),height(200),age(99),string(test)';
preg_match_all('/(\w+)\((\w+)\)/', $string, $matches);

$output = array_combine($matches[1], $matches[2]);

哪个输出:

array
  'width' => string '400' (length=3)
  'height' => string '200' (length=3)
  'age' => string '99' (length=2)
  'string' => string 'test' (length=4)

答案 2 :(得分:1)

$str = "width(400),height(200),age(99),string(test)";
preg_match_all('/(\d|\w)+/', $str,$matches);
$array = array();
for ($i=0; $i < count($matches[0]); $i += 2) { 
    $array[$matches[0][$i]] = $matches[0][$i+1];
}
print_r($array);

结果:

Array
(
    [width] => 400
    [height] => 200
    [age] => 99
    [string] => test
)

答案 3 :(得分:0)

如果您使用PHP print_r在GET中发送此变量,则不要这样做。

您可以将数据(数组)编码为JSON(使用json_encode)然后url_encode,然后将其发送到GET变量值。

在收到它的同时,反过来,先url_decode然后再json_decode以你正在寻找的数组格式获取

或者将每个width, height, age and string作为单独的变量发送以节省所有工作