Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-检索json字符串的第一个元素而不转换为数组_Php_Json - Fatal编程技术网

PHP-检索json字符串的第一个元素而不转换为数组

PHP-检索json字符串的第一个元素而不转换为数组,php,json,Php,Json,我有一个json字符串,我目前正在对其进行如下探测: $playedOn = $query -> data -> artist -> services_played_on 我现在想得到这个服务的第一个元素,但是我不确定怎么做。。如果它是一个数组,我只需要执行$query[data][artist][services\u played\u on][0],但由于各种原因,这会打乱我的其他代码。有人知道我如何使用->符号来实现这一点吗 -----编辑----- 谢谢你的回答,但我需

我有一个json字符串,我目前正在对其进行如下探测:

$playedOn = $query -> data -> artist -> services_played_on
我现在想得到这个服务的第一个元素,但是我不确定怎么做。。如果它是一个数组,我只需要执行$query[data][artist][services\u played\u on][0],但由于各种原因,这会打乱我的其他代码。有人知道我如何使用
->
符号来实现这一点吗

-----编辑-----

谢谢你的回答,但我需要的是:

$playedOn = $query -> data -> artist -> services_played_on[0]
(由于我是一个“新”用户,我还不能将此作为答案提交)

首先


我看不出你有什么问题。如果是JSON,只需像@Marcel所说的那样将其反序列化为PHP即可

如果希望结果是JSON,只需将其序列化回来即可

例如:

$json = '[ {"a":1} , {"d":3} , {"b":2} ]';

$data = json_decode( $json );

$new = json_encode( $data[1] ); // $new is now '{"d":3}'

由于您的问题非常模糊,我不确定您是否希望结果是JSON编码的,或者您是否希望按自己的方式拆分字符串。

仅使用
$tmp=JSON\u decode($query,true)有什么问题$tmp['data']['artist']['services_play_on'][0];unset($tmp)?!JSON是什么样子的,你确定在
上播放的
服务不是一个数组吗?我必须同意其他人的看法。为什么不想解码json数组?这没有多大意义,将涉及一个更复杂的操作。@tiswas:请参阅我上面的评论。没有理由不先解码它。否则,您必须与字符串表示进行交互,这使得一切变得无比复杂。
$json = '[ {"a":1} , {"d":3} , {"b":2} ]';

$data = json_decode( $json );

$new = json_encode( $data[1] ); // $new is now '{"d":3}'