繁体   English   中英

将PHP数组转换为JSON对象以自动完成

[英]Convert PHP array into JSON object for autocomplete

我正在使用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的工作。 如果有人能帮助我弄清楚我在做什么错,我将不胜感激。

您将在对其进行编码后立即将其解码回数组。 删除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;
  });

将数组转换为类似的键值结构:

  $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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM