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

Javascript 将PHP数组转换为JSON对象以自动完成,javascript,php,materialize,Javascript,Php,Materialize,我正在使用,并且希望使用我的一个PHP数组将所有可能的选项输出到表单中。请参阅下面的当前代码 const ac = document.querySelector('.autocomplete'); M.Autocomplete.init(ac, { data: { "Test1": null, "Test2": null, "Test3": null }, }); 我非常希望使用一个简单的$keysArray来输入Test1、Te

我正在使用,并且希望使用我的一个PHP数组将所有可能的选项输出到表单中。请参阅下面的当前代码

  const ac = document.querySelector('.autocomplete');
  M.Autocomplete.init(ac, {
    data: {
      "Test1": null,
      "Test2": null,
      "Test3": null
    },
  });
我非常希望使用一个简单的$keysArray来输入Test1、Test2、Test3选项等。但是,我从MaterializeCSS页面了解到,autocomplete使用的是一个对象,而不是数组。因此,我尝试使用各种不同的方法将$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;
  });

var tempArray=;//不起作用
var tempArray=;//也不起作用
const ac=document.querySelector('.autocomplete');
M.Autocomplete.init(ac{
资料来源:temparay;
});

临时数组的工作都没有。如果有人能帮我找出我做错了什么,我将不胜感激。

一旦编码完成,您就可以将其解码回数组。删除
json\u解码

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

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

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

var tempArray=;
const ac=document.querySelector('.autocomplete');
M.Autocomplete.init(ac{
资料来源:temparay;
});

编码完成后,您将其解码回数组。删除
json\u解码

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

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

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

var tempArray=;
const ac=document.querySelector('.autocomplete');
M.Autocomplete.init(ac{
资料来源:temparay;
});

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

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

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

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


一旦编码完成,您就可以将其解码回数组中。删除json_decode call这可能会起作用$keysObject=(object)$keysArray;我不知道为什么我不能使用Javascript方法使它工作,但是使用Jquery很容易。这是您可以做的吗?编码完成后,您会将其解码回数组中。删除json_decode call这可能会起作用$keysObject=(object)$keysArray;我不知道为什么我不能使用Javascript方法使它工作,但是使用Jquery很容易。这是你能做的吗?似乎大家都同意应该删除解码!然而,出于某些原因,这并没有帮助。由于以下链接,我将解码和编码一起使用:-但可能是完全其他的东西出了问题?@ChartProblems我认为您对PHP和JavaScript这两种不同语言中的数组和对象感到困惑。这篇文章讨论的是将数组转换为PHP对象,但您希望在JavaScript中使用对象
json_encode
将PHP数组或对象编码为JavaScript对象表示法,可以在JavaScript代码中作为JavaScript对象直接使用。PHP在服务器上运行,而JavaScript在浏览器下载并呈现页面时执行。@ChartProblems输出是什么样子的?查看页面的源代码并查看JS代码。PHP代码的输出将在JS代码中。在这种情况下,输出应该是JSON。似乎大家都同意应该删除解码!然而,出于某些原因,这并没有帮助。由于以下链接,我将解码和编码一起使用:-但可能是完全其他的东西出了问题?@ChartProblems我认为您对PHP和JavaScript这两种不同语言中的数组和对象感到困惑。这篇文章讨论的是将数组转换为PHP对象,但您希望在JavaScript中使用对象
json_encode
将PHP数组或对象编码为JavaScript对象表示法,可以在JavaScript代码中作为JavaScript对象直接使用。PHP在服务器上运行,而JavaScript在浏览器下载并呈现页面时执行。@ChartProblems输出是什么样子的?查看页面的源代码并查看JS代码。PHP代码的输出将在JS代码中。在本例中,输出应该是JSON。感谢您的帮助,但即使我将其转换为键值结构,它仍然不起作用。我开始认为问题完全是其他原因造成的?
不起作用
是无用的句子。如您所见,正确的数组结构json_编码为正确的json。所以你可能也有问题。谢谢你的帮助。我发现我必须在“data:tempArray”后面加逗号,而不是分号。这就是问题的原因。感谢您的帮助,但即使我转换为键值结构,它仍然无法工作。我开始认为问题完全是其他原因造成的?
不起作用
是无用的句子。如您所见,正确的数组结构json_编码为正确的json。所以你可能也有问题。谢谢你的帮助。我发现我必须在“data:tempArray”后面加逗号,而不是分号。这就是问题的根源。