我有这个$ str值:
[{\"firstname\":\"guest1\",\"lastname\":\"one\",\"age\":\"22\",\"gender\":\"Male\"},{\"firstname\":\"guest2\",\"lastname\":\"two\",\"age\":\"22\",\"gender\":\"Female\"}]
Run Code Online (Sandbox Code Playgroud)
我想将其拆分为以下内容:
firstname:guest1,lastname:one,age:22
firstname:guest2,lastname:two,age:22
Run Code Online (Sandbox Code Playgroud)
我尝试了explode (",",$str),但它爆炸所有使用,作为分隔符,我没有得到我想要的
有人可以帮帮我吗?
正如Josh K指出的那样,看起来很像JSON字符串.也许你应该用json_decode()它来获取你正在寻找的实际数据,所有数据都很好地组织成一个对象数组.
编辑:看起来你的字符串本身用双引号括起来",所以在你能够将它解码为有效的JSON之前你必须将它们修剪掉:
$str_json = trim($str, '"');
$guests = json_decode($str_json);
var_dump($guests);
Run Code Online (Sandbox Code Playgroud)
我得到了这个输出var_dump(),所以它绝对是有效的JSON:
array(2) {
[0]=>
object(stdClass)#1 (4) {
["firstname"]=>
string(6) "guest1"
["lastname"]=>
string(3) "one"
["age"]=>
string(2) "22"
["gender"]=>
string(4) "Male"
}
[1]=>
object(stdClass)#2 (4) {
["firstname"]=>
string(6) "guest2"
["lastname"]=>
string(3) "two"
["age"]=>
string(2) "22"
["gender"]=>
string(6) "Female"
}
}
Run Code Online (Sandbox Code Playgroud)
JSON(JavaScript Object Notation)不是CSV(逗号分隔值).它们是两种截然不同的数据格式,因此您无法像另一种那样解析它们.
要获取两个字符串,请使用循环来获取每个对象的键和值,然后使用这些值构建字符串:
foreach ($guests as $guest) {
$s = array();
foreach ($guest as $k => $v) {
if ($k == 'gender') break;
$s[] = "$k:$v";
}
echo implode(',', $s) . "\n";
}
Run Code Online (Sandbox Code Playgroud)
输出:
firstname:guest1,lastname:one,age:22
firstname:guest2,lastname:two,age:22
Run Code Online (Sandbox Code Playgroud)
(假设您确实想要出于某种原因排除性别;如果没有,请删除该if ($k == 'gender') break;行.)
| 归档时间: |
|
| 查看次数: |
1936 次 |
| 最近记录: |