php 有括号字符串转为数组,PHP,将带括号的字符串转换为数组

我正在查询API并发送一个JSON响应,然后我将其解码为一个数组.这部分工作正常,但API以相当不友好的格式发送信息.

我将粘贴我遇到问题的部分.本质上,我试图将每个像键一样更改为自己的数组.

Array

(

[name] => Name

[address] => 123 Street Rd

[products[0][product_id]] => 1

[products[0][price]] => 12.00

[products[0][name]] => Product Name

[products[0][product_qty]] => 1

[products[1][product_id]] => 2

[products[1][price]] => 3.00

[products[1][name]] => Product Name

[products[1][product_qty]] => 1

[systemNotes[0]] => Note 1

[systemNotes[1]] => Note 2

)

现在我想做的是做

它是这样的:

Array

(

[name] => Name

[address] => 123 Street Rd

[product] => Array

(

[0] => Array

(

[product_id] => 1

[price] => 12.00

[name] => Product Name

[product_qty] => 1

)

[1] => Array

(

[product_id] => 2

[price] => 3.00

[name] => Product Name

[product_qty] => 1

)

[systemNotes] => Array

(

[0] => Note 1

[1] => Note 2

)

)

这有什么实际的方法吗?

谢谢!

解决方法:

参考文献是你的朋友:

$result = array();

foreach ($inputArray as $key => $val) {

$keyParts = preg_split('/[\[\]]+/', $key, -1, PREG_SPLIT_NO_EMPTY);

$ref = &$result;

while ($keyParts) {

$part = array_shift($keyParts);

if (!isset($ref[$part])) {

$ref[$part] = array();

}

$ref = &$ref[$part];

}

$ref = $val;

}

然而,还有另一种更简单的方法,尽管它在功能复杂性方面效率稍低:

parse_str(http_build_query($inputArray), $result);

标签:php,regex

来源: https://codeday.me/bug/20190529/1177500.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值