在PHP数组中查找ID并替换它的子项

时间:2018-06-19 09:14:47

标签: php arrays json

在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和标题?

5 个答案:

答案 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);

https://3v4l.org/a2urf

答案 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);
    }
}

Demo

答案 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']);
?>