Daa*_*aan 19 javascript php arrays
我正在尝试将PHP数组转换为jQuery数组,以便jQuery的datetimepicker禁用某些日期.但我似乎无法在互联网上找到正确的答案.我正在为我的项目使用Zend Framework.
<?php
$ConvertDateBack = Zend_Controller_Action_HelperBroker::getStaticHelper('ConvertDate');
$disabledDaysRange = array();
foreach($this->reservedDates as $dates) {
$date = $ConvertDateBack->ConvertDateBack($dates->reservation_date);
$disabledDaysRange[] = $date;
}
?>
<script>
var disabledDaysRange = $disabledDaysRange ???? Please Help;
$(function() {
function disableRangeOfDays(d) {
for(var i = 0; i < disabledDaysRange.length; i++) {
if($.isArray(disabledDaysRange[i])) {
for(var j = 0; j < disabledDaysRange[i].length; j++) {
var r = disabledDaysRange[i][j].split(" to ");
r[0] = r[0].split("-");
r[1] = r[1].split("-");
if(new Date(r[0][2], (r[0][0]-1), r[0][1]) <= d && d <= new Date(r[1][2], (r[1][0]-1), r[1][1])) {
return [false];
}
}
}else{
if(((d.getMonth()+1) + '-' + d.getDate() + '-' + d.getFullYear()) == disabledDaysRange[i]) {
return [false];
}
}
}
return [true];
}
$('#date').datepicker({
dateFormat: 'dd/mm/yy',
beforeShowDay: disableRangeOfDays
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
Cha*_*JRA 34
要将PHP数组转换为JS,您可以这样做:
var js_array = [<?php echo '"'.implode('","', $disabledDaysRange ).'"' ?>];
Run Code Online (Sandbox Code Playgroud)
或使用JSON_ENCODE:
var js_array =<?php echo json_encode($disabledDaysRange );?>;
Run Code Online (Sandbox Code Playgroud)
没有JSON_ENCODE的示例:
<script type='text/javascript'>
<?php
$php_array = array('abc','def','ghi');
?>
var js_array = [<?php echo '"'.implode('","', $php_array).'"' ?>];
alert(js_array[0]);
</script>
Run Code Online (Sandbox Code Playgroud)
JSON_ENCODE示例:
<script type='text/javascript'>
<?php
$php_array = array('abc','def','ghi');
?>
var js_array =<?php echo json_encode($disabledDaysRange );?>;
alert(js_array[0]);
</script>
Run Code Online (Sandbox Code Playgroud)
Rez*_*ngi 14
PHP json_encode函数将传递给它的数据转换为JSON字符串,然后可以将其输出到JavaScript变量.PHP json_encode函数返回一个字符串,其中包含传递给它的值的JSON等价物.
<?php
$ar = array('apple', 'orange', 'banana', 'strawberry');
echo json_encode($ar); // ["apple","orange","banana","strawberry"]
?>
Run Code Online (Sandbox Code Playgroud)
您可以将json_encode输出的JSON字符串传递给JavaScript变量,如下所示:
<script type="text/javascript">
// pass PHP variable declared above to JavaScript variable
var ar = <?php echo json_encode($ar) ?>;
</script>
Run Code Online (Sandbox Code Playgroud)
数字索引的PHP数组被转换为JSON字符串中的数组文字.如果希望将数组作为对象输出,则可以使用JSON_FORCE_OBJECT选项:
<?php
echo json_encode($ar, JSON_FORCE_OBJECT);
// {"0":"apple","1":"orange","2":"banana","3":"strawberry"}
?>
Run Code Online (Sandbox Code Playgroud)
关联数组示例:
<?php
$book = array(
"title" => "JavaScript: The Definitive Guide",
"author" => "David Flanagan",
"edition" => 6
);
?>
<script type="text/javascript">
var book = <?php echo json_encode($book, JSON_PRETTY_PRINT) ?>;
/* var book = {
"title": "JavaScript: The Definitive Guide",
"author": "David Flanagan",
"edition": 6
}; */
alert(book.title);
</script>
Run Code Online (Sandbox Code Playgroud)
请注意,PHP的关联数组在JavaScript中成为对象文字.我们使用JSON_PRETTY_PRINT选项作为json_encode的第二个参数,以可读格式显示输出.
您可以使用点语法访问对象属性,如上面包含警报所示,或方括号语法:book ['title'].
在这里您可以找到更多信息和详细信息.
当我们将PHP数组转换为JS数组时,我们将获得所有字符串形式的值。例如:
var ars= '<?php echo json_encode($abc); ?>';
Run Code Online (Sandbox Code Playgroud)
上面方法的问题是,当我们尝试获取的第一个元素时,ars[0]
它给了我们括号,因为我们需要第一个元素而不是括号,所以更好的方法是
var packing_slip_orders = JSON.parse('<?php echo json_encode($packing_slip_orders); ?>');
Run Code Online (Sandbox Code Playgroud)
您应该使用json_parse
after json_encode
获得准确的数组结果。