Конвертировать массив PHP в объект JSON для автозаполнения - PullRequest
0 голосов
/ 25 января 2019

Я использую автозаполнение MaterializeCSS и хотел бы использовать один из моих массивов PHP для вывода всех возможных опций в форму. Пожалуйста, см. Ниже для текущего кода.

  const ac = document.querySelector('.autocomplete');
  M.Autocomplete.init(ac, {
    data: {
      "Test1": null,
      "Test2": null,
      "Test3": null
    },
  });

Я бы очень хотел использовать простой $ keysArray для ввода опций Test1, Test2, Test3 и т. Д. Однако я понял со страницы MaterializeCSS, что автозаполнение использует объект, а не массив. Поэтому я попытался преобразовать свой $ keysArray в объект, используя различные методы:

  <?php
  $keysArray = array (
    "Test1",
    "Test2",
    "Test3"
  );
  ?>

  var tempArray = <?php echo json_decode(json_encode($keysArray)); ?>; // Doesn't work
  var tempArray = <?php echo json_decode(json_encode($keysArray, JSON_FORCE_OBJECT)); ?>; // Also doesn't work

  const ac = document.querySelector('.autocomplete');
  M.Autocomplete.init(ac, {
    data: tempArray;
  });

Ни одна из работ tempArray. Я был бы очень признателен, если бы кто-нибудь помог мне разобраться, что я делаю неправильно.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Преобразуйте ваш массив в похожую структуру ключ-значение:

  $keysArray = array(
    "Test1" => null,
    "Test2" => null,
    "Test3" => null,
  );
  echo json_encode($keysArray); // {"Test1":null,"Test2":null,"Test3":null}

Может быть конвертировано с помощью:

$array = array('Test1', 'Test2', 'Test3');
$keysArray = array_combine($array, array_fill(0, count($array), null));
0 голосов
/ 25 января 2019

Вы декодируете его обратно в массив, как только он закодирован. Удалить json_decode.

  <?php
  $keysArray = array (
    "Test1",
    "Test2",
    "Test3"
  );
  ?>

  var tempArray = <?php echo json_encode($keysArray); ?>;

  const ac = document.querySelector('.autocomplete');
  M.Autocomplete.init(ac, {
    data: tempArray;
  });
...