我有一个包含3列名称 / 职业 / 注册的小部件,用户可以根据需要添加任意数量的人。
但数据是这样的:
数组([0] => [{“姓名”:“Bob [1] =>史密斯”,“职业”:“管理员”,“注册”:“1234”},{“姓名”: “詹姆斯[2] =>理查兹”,“职业”:“技师”,“注册”:“4345353”})
使用的PHP代码:
$people=$_POST['q36_addIndividuals'];
$str = $people;
print_r (explode(' ',$str));
我想要的是它看起来像这样:
Bob Smith - 管理员 - 1234
James Richards - 技师 - 4345353
答案 0 :(得分:2)
你只有一些JSON数据,但它不正确。
正确版本将是:
$data = '[{"Name":"Bob [1] => Smith","Occupation":"Administrator","Registration":"1234"},{"Name":"James [2] => Richards","Occupation":"Technician","Registration":"4345353"}]';
$data = json_decode($data);
foreach ($data as $json) {
echo $json->Name . ' - ' . $json->Occupation . ' - ' . $json->Registration;
echo "\n";
}
这将输出如下内容:
Bob [1] => Smith - Administrator - 1234
James [2] => Richards - Technician - 4345353
但是你应该考虑将Firstname和Lastname存储在两个不同的值中,你可以访问它们。
你也可以"删除" [n] =>
,但这是肮脏的方式。我不推荐这个!
$data = '[{"Name":"Bob [1] => Smith","Occupation":"Administrator","Registration":"1234"},{"Name":"James [2] => Richards","Occupation":"Technician","Registration":"4345353"}]';
$data = json_decode($data);
foreach ($data as $json) {
$json->Name = preg_replace(['/[[(0-9)]]|[=>]|[[]|/', '/ /'], ['', ' '], $json->Name);
echo $json->Name . ' - ' . $json->Occupation . ' - ' . $json->Registration; // not recommended
echo "\n";
}
答案 1 :(得分:1)
print_r函数只粘贴数组的结构。
如果你想要一个不同的表单,你需要遍历数组并为每个元素写出来:
foreach($people as $element){
echo $element['Name']." - ".
$element['Occupation']." - ".
$element['Registration'];
}