Php foreach用于javascript、json数组

Php foreach用于javascript、json数组,php,javascript,jquery,json,Php,Javascript,Jquery,Json,我有一个JSON数组,如下所示: [{"RegDate":"31-03-2011"},{"RegDate":"29-07-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"12-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"23-08-2011"},{"RegDa

我有一个JSON数组,如下所示:

[{"RegDate":"31-03-2011"},{"RegDate":"29-07-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"12-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"23-08-2011"},{"RegDate":"07-09-2011"},{"RegDate":"09-09-2011"},{"RegDate":"13-10-2011"},{"RegDate":"13-10-2011"},{"RegDate":"13-10-2011"},{"RegDate":"25-10-2011"},{"RegDate":"25-10-2011"},{"RegDate":"03-11-2011"},{"RegDate":"03-11-2011"},{"RegDate":"11-11-2011"},{"RegDate":"16-11-2011"},{"RegDate":"18-11-2011"},{"RegDate":"21-11-2011"},{"RegDate":"02-12-2011"},{"RegDate":"02-12-2011"},{"RegDate":"12-12-2011"}]
获取此json数组的代码如下所示:

var unavailableDates1 = jQuery.parseJSON('<?php echo json_encode($noticesDates) ?>');
我不确定如何做到这一点,我已经尝试了foreach,但没有成功

感谢您的帮助。

var justDates=[];
var justDates = [];
for (var i=0; i < unavailableDates1.length; i++) {
   justDates.push(unavailableDates1[i]['RegDate']);
}
对于(变量i=0;i
每个对象({'RegDate:'date'})都是javascript数组中的一个项。要获取项目,请使用数字索引。因此,要获得第一项,将是数组[0],这将为您提供
{“RegDate”:“31-03-2011”}
。然后,要获取特定的日期字符串,只需使用键
theArray[0]['RegDate']
!。因此,由于您希望遍历列表中的每个成员,因此应该使用
.length
获取列表长度

For循环通常用于这种类型的迭代,而不用于..in。因为for in可以访问不需要的属性

var justDates=[];
对于(变量i=0;i
每个对象({'RegDate:'date'})都是javascript数组中的一个项。要获取项目,请使用数字索引。因此,要获得第一项,将是数组[0],这将为您提供
{“RegDate”:“31-03-2011”}
。然后,要获取特定的日期字符串,只需使用键
theArray[0]['RegDate']
!。因此,由于您希望遍历列表中的每个成员,因此应该使用
.length
获取列表长度


For循环通常用于这种类型的迭代,而不用于..in。因为for in可以访问不需要的属性

首先,
parseJSON
是不必要的,实际上是危险的。把它拿出来:

var unavailableDates1 = <?php echo json_encode($noticesDates) ?>;

使用这样的字符串对以下三个对象是危险的,例如:

  • {“key”:“此处反斜杠:\\”}
  • {“key”:“我是一匹马!”
  • {“key”:“Some\\backslash”}
它们分别成为:

  • SyntaxError:输入的意外结尾(单个转义符转义字符串的结尾)
  • SyntaxError:意外标识符(未替换的单引号从字符串中断开,实际上是XSS漏洞)
  • 对象
    键:“Someackslash”(
    \\b
    成为
    \b
    退格控制字符)
    __原型:对象

你可以再次逃避,但没有必要;valid JSON始终是一个有效的JavaScript对象,您可以相信您自己的PHP不会在其中包含注入代码。

首先,
parseJSON
是不必要的,实际上是危险的。把它拿出来:

var unavailableDates1 = <?php echo json_encode($noticesDates) ?>;
for(var i=0;i<unavailableDates.length;i++) {
    unavailableDates[i] = unavailableDates[i].RegDate;
}

使用这样的字符串对以下三个对象是危险的,例如:

  • {“key”:“此处反斜杠:\\”}
  • {“key”:“我是一匹马!”
  • {“key”:“Some\\backslash”}
它们分别成为:

  • SyntaxError:输入的意外结尾(单个转义符转义字符串的结尾)
  • SyntaxError:意外标识符(未替换的单引号从字符串中断开,实际上是XSS漏洞)
  • 对象
    键:“Someackslash”(
    \\b
    成为
    \b
    退格控制字符)
    __原型:对象
你可以再次逃避,但没有必要;有效的JSON总是一个有效的JavaScript对象,您可以相信您自己的PHP不会在其中包含注入代码。

for(var i=0;i
for(var i=0;i看一看。
for(var i=0;i<unavailableDates.length;i++) {
    unavailableDates[i] = unavailableDates[i].RegDate;
}
您可以执行以下操作:

dates = new Array();
unavailableDates1.forEach(function (obj){ 
    dates.push(obj.RegDate);
};
看一看。 您可以执行以下操作:

dates = new Array();
unavailableDates1.forEach(function (obj){ 
    dates.push(obj.RegDate);
};
请尝试以下操作:

var unavailableDates1 = jQuery.parseJSON('<?php echo json_encode($noticesDates) ?>');
JavaScript:

var x = [{"RegDate":"31-03-2011"},{"RegDate":"29-07-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"12-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"23-08-2011"},{"RegDate":"07-09-2011"},{"RegDate":"09-09-2011"},{"RegDate":"13-10-2011"},{"RegDate":"13-10-2011"},{"RegDate":"13-10-2011"},{"RegDate":"25-10-2011"},{"RegDate":"25-10-2011"},{"RegDate":"03-11-2011"},{"RegDate":"03-11-2011"},{"RegDate":"11-11-2011"},{"RegDate":"16-11-2011"},{"RegDate":"18-11-2011"},{"RegDate":"21-11-2011"},{"RegDate":"02-12-2011"},{"RegDate":"02-12-2011"},{"RegDate":"12-12-2011"}];
var ary = new Array();
for (foo in x) {
    ary.push(x[foo].RegDate);
}
console.log(ary);

尝试以下操作:

var unavailableDates1 = jQuery.parseJSON('<?php echo json_encode($noticesDates) ?>');
JavaScript:

var x = [{"RegDate":"31-03-2011"},{"RegDate":"29-07-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"09-08-2011"},{"RegDate":"12-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"15-08-2011"},{"RegDate":"23-08-2011"},{"RegDate":"07-09-2011"},{"RegDate":"09-09-2011"},{"RegDate":"13-10-2011"},{"RegDate":"13-10-2011"},{"RegDate":"13-10-2011"},{"RegDate":"25-10-2011"},{"RegDate":"25-10-2011"},{"RegDate":"03-11-2011"},{"RegDate":"03-11-2011"},{"RegDate":"11-11-2011"},{"RegDate":"16-11-2011"},{"RegDate":"18-11-2011"},{"RegDate":"21-11-2011"},{"RegDate":"02-12-2011"},{"RegDate":"02-12-2011"},{"RegDate":"12-12-2011"}];
var ary = new Array();
for (foo in x) {
    ary.push(x[foo].RegDate);
}
console.log(ary);

我注意到您在这里也标记了jquery,因此,这里有一个jquery解决方案:


我注意到您在这里也标记了jquery,因此,这里有一个jquery解决方案:


试试这个,可能有用

var unavailableDates = [];
for(var i = 0; i < unavailableDates1.length; i++){
    unavailableDates[i] = unavailableDates1[i].RegDate;
}
var不可用日期=[];
对于(变量i=0;i
试试这个,可能有用

var unavailableDates = [];
for(var i = 0; i < unavailableDates1.length; i++){
    unavailableDates[i] = unavailableDates1[i].RegDate;
}
var不可用日期=[];
对于(变量i=0;i布莱斯:考虑到我有一个带反斜杠的数据。PHP像:<代码> {“BLAH”:“一些\反斜杠”} /代码>它进入字符串:“<代码>”{“BLAH”:“一些\反斜杠”}。“
结果是一个具有属性
blah
的对象,该属性不包含反斜杠和
b
,而是一个反斜杠控制字符。如果反斜杠恰好位于字符串末尾,则所有内容都会爆炸。如果JSON中的任何位置都有撇号,则所有内容都会爆炸。@minitech不是paresJS的重点如何优雅地处理这类问题?除此之外,我们都知道eval是邪恶的,等等。但当你控制数据时,人们对它的使用反应过度(不是说你不应该尽可能避免它,而是…)我同意PaSeJSON是完全不必要的。@ MiTiCH + 1对于这些伟大的例子来说,我认为你的意思是恶意的事情会发生。”布莱斯:考虑到我里面有一个反斜杠的数据。PHP逃脱了:<代码> {“BLAH”:“一些\反斜杠”} /代码>它进入字符串:<代码> {“BLAH”):“某些\\反斜杠”}“
结果是一个具有属性
blah
的对象,该属性不包含反斜杠和
b
,而是一个反斜杠控制字符。如果反斜杠恰好位于字符串末尾,则所有内容都会爆炸。如果JSON中的任何位置都有撇号,则所有内容都会爆炸。@minitech不是paresJS的重点如何优雅地处理这类问题?除此之外,我们都知道eval是邪恶的,等等。但当你控制数据时,人们对它的使用反应过度(不是说你应该这样做)