Удалить значение в массиве и в массиве Laravel - PullRequest
0 голосов
/ 07 октября 2018

У меня есть массив

Product:[
     {
       content:'',
       tag:[
         {
           name:'a',
         },
         {
           name:'b'
         }
       ]
     }
]

И у меня есть значение x = 'a'

Мне нужно удалить имя в tag в массиве product, где name == x

Я использовал два элемента foreach, один цикл foreach Product и один тег цикла foreach, затем проверил условие if(name == x) и удалил элемент

Код

$tag = 'a'

foreach($blogs as $blog) {

    foreach(json_decode($blog->tag) as $detail_tag) {

        if($detail_tag == $tag) {

            delete($detail_tag);
        }
    }
}

Однако ясредняя функция имеет какую-то ошибку (я пишу код на бумаге и не тестирую :(), и я имею в виду отсутствие производительности @@. Спасибо

1 Ответ

0 голосов
/ 07 октября 2018
  • Сначала необходимо преобразовать объект JSON в массив, используя функцию json_decode().Второй параметр в этой функции установлен на true, чтобы преобразовать JSON в ассоциативный массив.
  • Затем выполните цикл по массиву.В foreach вам также необходимо получить доступ к ключу, чтобы unset() значение.
  • Затем преобразуйте массив обратно в объект JSON, используя функцию json_encode().

Попробуйте:

$tag = 'a';

foreach($blogs as $blog) {

  // convert to array using json_decode() (second parameter to true)
  $blog_arr = json_decode($blog->tag, true);

  // Loop over the array accessing key as well
  foreach( $blog_arr as $key => $detail_tag){

      if ($detail_tag === $tag) {
          // unset the key
          unset($blog_arra[$key]);
      }

   // Convert back to JSON object
   $blog_tag_modified = json_encode($blog_arr);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...