数组爆炸 json
Array explode json
我想从表单数据生成 json。这就是我所拥有的:
<?php
$data = explode(',', $data);
$accounts = [];
foreach ($data as $split) {
$split = explode(':', $split);
$accounts['username'] = trim($split[0]);
$accounts['password'] = $split[1];
}
var_dump(json_encode($accounts));
问题是它只执行循环中的最后一个元素。我知道它为什么这样做,但我忽略了一些东西并且无法正确处理..我希望 json 是这样的;
{
"Username": "username",
"Password": "username"
},
{
"Username": "username",
"Password": "password"
},
等等等等。解决这个问题的最佳方法是什么?我可能想的不对..
$data = explode(',', $data);
$accounts = [];
foreach ($data as $key=>$split) {
$split = explode(':', $split);
$accounts[$key]['username'] = trim($split[0]);
$accounts[$key]['password'] = $split[1];
}
var_dump(json_encode($accounts));
查看更新后的代码示例;在您的原始代码中,您每次迭代都会覆盖 $accounts 数组,这就是为什么当您 var_dump 时显示循环的最后一个元素。在添加键时,您将值映射到一个新的多维数组。
A functional way with array_map
(无非是一个隐式循环):
$data = 'username1:pass1, user2:pass2, uesr3:pass3';
$accounts = array_map(function ($account) {
list($user, $pass) = explode(':', $account);
return [ 'username' => trim($user), 'password' => $pass ];
}, explode(',', $data));
echo json_encode($accounts);
我想从表单数据生成 json。这就是我所拥有的:
<?php
$data = explode(',', $data);
$accounts = [];
foreach ($data as $split) {
$split = explode(':', $split);
$accounts['username'] = trim($split[0]);
$accounts['password'] = $split[1];
}
var_dump(json_encode($accounts));
问题是它只执行循环中的最后一个元素。我知道它为什么这样做,但我忽略了一些东西并且无法正确处理..我希望 json 是这样的;
{
"Username": "username",
"Password": "username"
},
{
"Username": "username",
"Password": "password"
},
等等等等。解决这个问题的最佳方法是什么?我可能想的不对..
$data = explode(',', $data);
$accounts = [];
foreach ($data as $key=>$split) {
$split = explode(':', $split);
$accounts[$key]['username'] = trim($split[0]);
$accounts[$key]['password'] = $split[1];
}
var_dump(json_encode($accounts));
查看更新后的代码示例;在您的原始代码中,您每次迭代都会覆盖 $accounts 数组,这就是为什么当您 var_dump 时显示循环的最后一个元素。在添加键时,您将值映射到一个新的多维数组。
A functional way with array_map
(无非是一个隐式循环):
$data = 'username1:pass1, user2:pass2, uesr3:pass3';
$accounts = array_map(function ($account) {
list($user, $pass) = explode(':', $account);
return [ 'username' => trim($user), 'password' => $pass ];
}, explode(',', $data));
echo json_encode($accounts);