javascript - 无论索引如何,都将 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 时,它表示该函数未定义。
如何为对象中的任何索引执行此操作以查看该字段?
解决方案
<?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>
推荐阅读
- react-native - 有什么方法可以学习 uri 没有图像 react-native
- node.js - Cookie 安全问题
- haskell - 使用连续的非此即彼/可能时减少嵌套
- sql - SQL查询返回一个不落在两个日期之间的集合
- mediawiki - 模板的语义媒体 Wiki 类别
- reactjs - 如何避免 Web 应用程序中的数据重复/泄漏
- jquery - DataTables 的 TreeGrid 扩展 - 默认情况下如何扩展它?
- flutter - 如何阻止 GoogleMapController 的 animateCamera 方法连续调用,并且仅在按下当前位置按钮时平移?
- python - 这不太可能吗?或者是不可能的
- php - Laravel Spatie 多租户找不到租户