Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP创建Javascript数组时未定义该数组_Javascript_Php_Jquery - Fatal编程技术网

使用PHP创建Javascript数组时未定义该数组

使用PHP创建Javascript数组时未定义该数组,javascript,php,jquery,Javascript,Php,Jquery,再往上看,我正在创建一个filterComparables[]数组 var filterComparables[<?=$x?>] = <?php echo json_encode($comparables); ?>; 我已经调试并正确返回int值,但是当尝试访问filterComparables[propID]时,它返回“filterComparables未在HtmleElement定义”。我还尝试过严格访问filterComparables[0],结果相同 是不是因为

再往上看,我正在创建一个filterComparables[]数组

var filterComparables[<?=$x?>] = <?php echo json_encode($comparables); ?>;
我已经调试并正确返回int值,但是当尝试访问filterComparables[propID]时,它返回“filterComparables未在HtmleElement定义”。我还尝试过严格访问filterComparables[0],结果相同


是不是因为我在PHP中创建了索引数组,但它没有在DOM中注册?我很困惑。

在PHP中创建索引数组应该没问题,您声明filterComparables变量的方式很可能是这里的问题,我把它弄得有点乱,下面是我为我设计的脚本的简化形式:

<?php
    $x = 1;
    $comparables = array('foo','bar','bas');
?>

<script>
    var filterComparables = [];
    filterComparables[<?=$x?>] = <?php echo json_encode($comparables); ?>;
</script>
<p>some html for filler</p>
<script>
// var propID = parseInt($(this).closest('tr').find('.propID').text());
var property = filterComparables[1];
console.log(property);
</script>

var filterComparables=[];
过滤器比较[]=;
一些用于填充的html

//var-propID=parseInt($(this).closest('tr').find('.propID').text()); var属性=过滤器比较[1]; console.log(属性);

注意,我声明了filterComparables并键入它,然后开始给它赋值。

console.log(JSON.stringify(filterComparables))log是什么意思?我对如何创建
filterComparables
数组有点怀疑。您是否在循环中创建它?然后请记住,您可以通过
var
一次又一次地覆盖整个arrray。如果没有,为什么要在那里使用
?这将是过时的。是不是
然后在代码中使用
JSON.parse
?@eisbehr如果他们在JSON周围放上“”,javascript将不会自动将其解析为对象。他们必须对我写的东西进行JSON.parse?!我不能100%确定将php的输出直接放在那里是否有效。难道没有任何情况下json_编码应该被再次解析吗?!还不确定@Taplar@eisbehr这完全是情境性的,比如ajax请求将返回一个必须解析的字符串,但在本例中,javascript是生成的。所以
varx={“x”:“y”}
的工作原理与正在解析的字符串版本一样好,程序员只需少键入一个操作。
<?php
    $x = 1;
    $comparables = array('foo','bar','bas');
?>

<script>
    var filterComparables = [];
    filterComparables[<?=$x?>] = <?php echo json_encode($comparables); ?>;
</script>
<p>some html for filler</p>
<script>
// var propID = parseInt($(this).closest('tr').find('.propID').text());
var property = filterComparables[1];
console.log(property);
</script>