Поиск многомерного массива JSON по значению с использованием ключей c - php - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь найти сложный массив JSON, который конвертируется из ответа SOAP XML для указанного значения c. Ключи действительно общие c.

 ["configurableFields"]=>
  array(1) {
    ["configurableField"]=>
    array(6) {
      [0]=>
      array(3) {
        ["label"]=>
        string(15) "Job Information"
        ["value"]=>
        string(15) "Job Information"
        ["criteria"]=>
        array(1) {
          ["criterion"]=>
          array(3) {
            [0]=>
            array(2) {
              ["label"]=>
              string(19) "SAP Position Number"
              ["value"]=>
              string(3) "TBC"
            }
            [1]=>
            array(2) {
              ["label"]=>
              string(20) "Assignment JD Number"
              ["value"]=>
              string(6) "AG111111"
            }
            [2]=>
            array(2) {
              ["label"]=>
              string(20) "Generic JD Reference"
              ["value"]=>
              string(5) "C11111"
            }
          }
        }
      }
      [1]=>
      array(3) {
        ["label"]=>
        string(16) "Hours and salary"
        ["value"]=>
        string(5) "Hours"
        ["criteria"]=>
        array(1) {
          ["criterion"]=>
          array(3) {
            [0]=>
            array(2) {
              ["label"]=>
              string(14) "hours per week"
              ["value"]=>
              string(2) "37"
            }
            [1]=>
            array(2) {
              ["label"]=>
              string(14) "weeks per year"
              ["value"]=>
              string(2) "52"
            }
            [2]=>
            array(2) {
              ["label"]=>
              string(6) "Salary"
              ["value"]=>
              string(11) "£29,636 pa"
            }
          }
        }
      }
    }
  }

Как в приведенном выше примере я ищу в массиве метку "Зарплата", а затем получаю строку значения для "£ 29, 636 в год".

Извините, если мне не хватает чего-то простого. У меня нет начального кода, так как я просто печатал значение, нацелив его на foreach l oop.

РЕДАКТИРОВАТЬ: Забыли добавить расположение значений в массиве может измениться, если некоторые из данные отсутствуют.

1 Ответ

0 голосов
/ 16 апреля 2020

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

$array = array_column($array["configurableFields"]["configurableField"], null, "label");

Тогда у вас будут ключи Job Information и Hours and salary. Затем вы можете индексировать criterion с помощью label:

$HoursSalary = array_column($array["Hours and salary"]["criteria"]["criterion"], null, "label");

и, наконец, получить доступ к value клавиши Salary:

echo $HoursSalary["Salary"]["value"];
...