Как бы я мог разобрать переменную php с этой строкой, хранящейся в ней? - PullRequest
0 голосов
/ 07 мая 2019

Я новичок в php и пытаюсь разобрать полученную строку.Строка является результатом запуска bash-скрипта, и я сохраняю вывод в переменную php.Вот вывод, который я получаю:

1/1 [==============================] - 1s 1s/step
[
  {
    "image_id": "mahomes1",
    "mean_score_prediction": 6.3682564571499825
  },
  {
    "image_id": "mahomes2",
    "mean_score_prediction": 6.7501190304756165
  },
  {
    "image_id": "mahomes3",
    "mean_score_prediction": 6.3136263862252235
  }, 
]

Как мне выполнить синтаксический анализ этой строки, чтобы я мог создать словарь, в котором будет храниться значение "image_id" со значением "mean_score_prediction"?

1 Ответ

0 голосов
/ 07 мая 2019

Ваши данные являются почти допустимым JSON, кроме начального текста и запятой между окончательным } и закрывающим ].Удалив эти проблемы, вы можете использовать json_decode, чтобы получить словарь в виде массива объектов (или массивов, в зависимости от ваших предпочтений):

$string = preg_replace(array('/^[^\v]+/', '/,(\s+\])/'), array('', '$1'), $string);
$dict = json_decode($string);
print_r($dict);

Вывод:

Array ( 
  [0] => stdClass Object (
    [image_id] => mahomes1
    [mean_score_prediction] => 6.36825645715 
  )
  [1] => stdClass Object (
    [image_id] => mahomes2
    [mean_score_prediction] => 6.7501190304756
  )
  [2] => stdClass Object (
    [image_id] => mahomes3
    [mean_score_prediction] => 6.3136263862252
  ) 
)

Чтобы получить массив массивов, вызовите json_decode со вторым параметром true т.е.

$dict = json_decode($string, true);

Демонстрация на 3v4l.org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...