php 数组格式的字符串转为数组_将字符串转换为单个数组,PHP

3 个答案:

答案 0 :(得分:5)

你可以像试试这样分开:

$string = "txn_status=0|txn_msg=success|txn_err_msg=NA|clnt_txn_ref=969239|tpsl_bank_cd=470|tpsl_txn_id=192630337|txn_amt=1.00|clnt_rqst_meta={itc:NIC~TXN0001~122333~rt14154~8 mar 2014~Payment~forpayment}{custname:test}|tpsl_txn_time=26-12-2015 15:56:20|tpsl_rfnd_id=NA|bal_amt=NA|rqst_token=hdfs-df-jkfhskjfhsjkd|hash=jhdsfs54367jhf";

$firstArray = explode("|", $string);

foreach ($firstArray as $key => $value) {

$newArr = explode("=", $value);

$myRequiredArr[$newArr[0]] = $newArr[1];

}

echo "

"; // just for formatting

print_r($myRequiredArr); // print your result

结果是:

Array

(

[txn_status] => 0

[txn_msg] => success

[txn_err_msg] => NA

[clnt_txn_ref] => 969239

[tpsl_bank_cd] => 470

[tpsl_txn_id] => 192630337

[txn_amt] => 1.00

[clnt_rqst_meta] => {itc:NIC~TXN0001~122333~rt14154~8 mar 2014~Payment~forpayment}{custname:test}

[tpsl_txn_time] => 26-12-2015 15:56:20

[tpsl_rfnd_id] => NA

[bal_amt] => NA

[rqst_token] => hdfs-df-jkfhskjfhsjkd

[hash] => jhdsfs54367jhf

)

答案 1 :(得分:2)

$string = "txn_status=0|txn_msg=success|txn_err_msg=NA|clnt_txn_ref=969239|tpsl_bank_cd=470|tpsl_txn_id=192630337|txn_amt=1.00|clnt_rqst_meta={itc:NIC~TXN0001~122333~rt14154~8 mar 2014~Payment~forpayment}{custname:test}|tpsl_txn_time=26-12-2015 15:56:20|tpsl_rfnd_id=NA|bal_amt=NA|rqst_token=hdfs-df-jkfhskjfhsjkd|hash=jhdsfs54367jhf";

preg_match_all("/([^|]+)=([^|]+)/", $string, $array);

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

echo json_encode($output, JSON_PRETTY_PRINT);

$array = preg_split("/[|=]/", $string);

$output = [];

for ($i=0; $i

$output[$array[$i]] = $array[++$i];

}

或@ devpro代码的简化版:

$array = explode("|", $string);

$output = [];

foreach ($array as $v) {

list($key, $value) = explode("=", $v);

$output[$key] = $value;

}

答案 2 :(得分:1)

你可以使用php函数explode,array_map和call_user_func_array的组合,如

$string = "txn_status=0|txn_msg=success|txn_err_msg=NA|clnt_txn_ref=969239|tpsl_bank_cd=470|tpsl_txn_id=192630337|txn_amt=1.00|clnt_rqst_meta={itc:NIC~TXN0001~122333~rt14154~8 mar 2014~Payment~forpayment}{custname:test}|tpsl_txn_time=26-12-2015 15:56:20|tpsl_rfnd_id=NA|bal_amt=NA|rqst_token=hdfs-df-jkfhskjfhsjkd|hash=jhdsfs54367jhf";

$arr = array();

array_map(function($v)use(&$arr){ $a = explode("=",$v); return $arr[$a[0]] = $a[1];},explode('|',$string));

print_r($arr);

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

简森刘

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值