Синтаксический анализ Json-ключа / значений значения ключа с помощью JObject с использованием PHP

#php #json

#php #json

Вопрос:

Пожалуйста, кто-нибудь может мне помочь в этом, чтобы удалить все ключи, которые имеют значения N / A, — или пустые строки. Если одно из значений отображается в массиве, удалите этот единственный элемент из массива

 {
  "name": {
    "first": "Robert",
    "middle": "",
    "last": "Smith"
  },
  "age": 25,
  "DOB": "-",
  "hobbies": [
    "running",
    "coding",
    "-"
  ],
  "education": {
    "highschool": "N/A",
    "college": "Yale"
  }
}
 

Ожидаемый результат будет:
{
«name»: {
«first»: «Robert»,
«last»: «Smith»
},
«возраст»: 25,
«хобби»: [
«бег»,
«кодирование»
],
«образование»: {
«highschool»: «N / A»,
«college»: «Yale»
}
}

Комментарии:

1. Используйте рекурсивную функцию, которая перебирает свойства и удаляет любое свойство с одним из этих значений.

2. Привет @Barmar спасибо за комментарий. Можете ли вы закодировать это для меня? Спасибо

Ответ №1:

Вы можете использовать следующую логику для удаления элементов из ваших исходных данных:

Рекурсивная функция cleanUp() циклически перебирает данные и удаляет все записи со значениями, заданными в массиве $remove

 $arr = json_decode($json, true);
$remove = ['N/A', '-','',];
cleanUp($arr, $remove);

function cleanUp(array amp;$arr, array $remove = [])
{
    foreach($arr as $key => amp;$value) {
        if(is_array($value)) {
            cleanUp($value, $remove);
        } else {
            if(in_array($value, $remove)) unset($arr[$key]);
        }
    }
}
 

рабочая демонстрация

Комментарии:

1. рад, что смог помочь!