首页 > 解决方案 > 无论索引如何,都将 JS 变量等同于 json 编码的 php 数组值

问题描述

我正在将一个 JS 变量与一个 json 编码的 php 数组值进行比较,该值目前按原样工作:

function myFunction() {
    var itemArray = <?php echo json_encode($items);?>;   
    console.log(itemArray);

    var number = 14;

    if(number == itemArray[0]['number']){
        success.style.display = "block";
        error.style.display = "none";
    }
}

[{
    0:
        name: "nameOne"
        number: 14
    1:
        name: "nameTwo"
        number: 13
    2:
        name: "nameThree"
        number: 8
}]

$items: array:3 [
    0=>array{
        name: "nameOne"
        number: 14
    }
    1=>array{
        name: "nameTwo"
        number: 13

    }
    2=>array{
        name: "nameThree"
        number: 8
    }
]

所以它的索引为零,这对于测试比较来说很好,但这不是我想要的。我希望能够查看此对象中每个索引的“数字”字段。所以基本上我想说“如果 14 在这里的任何索引中都作为‘数字’存在,那么这应该是真的”。

我最终也想对其他字段执行此操作,但是当我将索引更改为if(number == itemArray[]['number']){then 时,它表示该函数未定义。

如何为对象中的任何索引执行此操作以查看该字段?

标签: javascriptphp

解决方案


<?php
//I suppose Your items will be like
$items = 
array(array("name" => "nameOne","number" => 14),
    array("name"=> "nameTwo","number"=> 13),
     array("name"=> "nameThree","number"=> 8)
);

echo "<pre>";
print_r($items);
?>

<script>
myFunction();
function myFunction() {
  //Use the JavaScript function JSON.parse() to convert text into a JavaScript object:
   var json  = JSON.parse('<?php echo json_encode($items);?>');   
   console.log(json );

   var number = 14;
   var result = false;
   var error = '';
   //Use the loop to get the value from json
  for(var i = 0; i < json.length; i++) {
    var obj = json[i];

   //If obj.number is 14 add your code
   if(number == obj.number){
      result = true;

   }
  }

 if(result){
    alert('success message');
    success.style.display = "block";
    error.style.display = "none";
 }else{
    success.style.display = "none";
    error.style.display = "block";
 }

}
</script>

推荐阅读