我是PHP的新手,所以我搜索并阅读了很多文章,但是在这里或其他地方找不到任何解决方案。我的问题是我有一个像这样的动态字符串
[{"NAME":"jennifer lopez"},{"Name":"Ricky Martin"}]
或
[{"NAME":"Tom and Jerry"},{"Name":"Donald Duck"},{"Name":"Rick And Morty"}]
它总是在变化,所以我只想取像这样的名字;珍妮佛·洛佩兹(Jennifer lopez)瑞奇·马丁(Ricky Martin)或汤姆(Tom)和杰里·唐纳德·达克(Jerry Donald Duck Rick And Morty)。我尝试过
$pos = strpos($newarray,":")+2;
$pos1 = strpos($newarray,"}")-1;
$pos2 = $pos1-$pos;
但是它只返回詹妮弗·洛佩兹。
答案 0 :(得分:0)
如果JSON字符串中的键(Name/NAME/name
)始终更改,则可以使用以下代码访问名称。
$x = json_decode('[{"NAME":"jennifer lopez"},{"Name":"Ricky Martin"}]', true);
$names = [];
foreach ($x as $value) {
$names[] = array_values($value)[0];
}
print_r($names);
答案 1 :(得分:0)
您发布的字符串似乎是JSON格式的字符串。如果它是JSON格式的字符串,则可以使用json_decode($inputString)
方法来获取对象数组。
此外,JSON字符串中的键与您发布的键不同。如果尝试使用“名称”或“名称”直接访问属性,PHP将报告错误/警告。因此,您可以将stdClass对象转换为array并获取第一个元素值。代码如下:
$inputString = '[{"NAME":"Tom and Jerry"},{"Name":"Donald Duck"},{"Name":"Rick And Morty"}]';
foreach(json_decode($inputString) as $nameObj) {
$nameArr = (array) $nameObj;
echo reset($nameArr);
}