在PHP中,我创建了一个由ID和标题组成的数组。我使用json_decode来收集这段JSON。
[
{
"id": 0,
"title": "a title"
},
{
"id": 1,
"title": "another title"
},
{
"id": 2,
"title": "one more title"
}
]
现在我创建了一个由id" 1"组成的PHP数组。和标题"一个不同的标题"以相同的格式,我最初创建了我已经拥有的JSON
如何使用我必须用我的新标题替换标题的ID来找到ID和标题?
答案 0 :(得分:0)
如果要查找具有特定id
值的元素并使用新值替换title
标记,请尝试以下代码:
$id = 1; //ID to find
$title = "New Title Value";
foreach ($array as $key => $value) {
if ($value["id"] == $id) {
$value["title"] = $title;
}
$array[$key] = $value;
}
答案 1 :(得分:0)
一个简单的两个班轮:
我首先使用array_column从数组中取出id并使用array_diff删除id = 1项
然后我在array_intersect_key中使用它,只将id 0和2包含在新的$ arr中
然后我将$ find数组添加为最后一项
无需循环。
$arr = json_decode('[
{
"id": 0,
"title": "a title"
},
{
"id": 1,
"title": "another title"
},
{
"id": 2,
"title": "one more title"
}
]', true);
$find = [
'id' => 1,
'title' => 'a different title',
];
$arr = array_intersect_key($arr, array_diff(array_column($arr, "id"), [$find["id"]]));
$arr[] = $find;
Var_dump($arr);
答案 2 :(得分:0)
您可以使用foreach并将值设置为ID匹配的数组:
namespace System.Globalization
{
public static class ISOWeek
{
public static int GetWeekOfYear(DateTime date);
public static int GetWeeksInYear(int year);
public static int GetYear(DateTime date);
public static DateTime GetYearEnd(int year);
public static DateTime GetYearStart(int year);
public static DateTime ToDateTime(int year, int week, DayOfWeek dayOfWeek);
}
}
答案 3 :(得分:-1)
$items = json_decode('[
{
"id": 0,
"title": "a title"
},
{
"id": 1,
"title": "another title"
},
{
"id": 2,
"title": "one more title"
}
]', true);
$replace = [
'id' => 1,
'title' => 'a different title',
];
$items = array_map(function($item) use($replace) {
return (int)$item['id'] === (int)$replace['id'] ? $replace : $item;
}, $items);
print_r($items);
答案 4 :(得分:-1)
<?php
$str='[{
"id": 0,
"title": "a title"
},
{
"id": 1,
"title": "another title"
},
{
"id": 2,
"title": "one more title"
}]
';
$arr=(array)json_decode($str,true);
//var_dump($arr);
//print_r($arr);
echo($arr[0]['id']);
echo($arr[0]['title']);
echo($arr[1]['id']);
echo($arr[1]['title']);
echo($arr[2]['id']);
echo($arr[2]['title']);
?>