PHP array() 到 javascript array()
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18784178/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
PHP array() to javascript array()
提问by Daan
I'm trying to convert a PHP array to a javascript array for jQuery's datetimepicker to disable some dates. But I can't seem to find the right answer on the internet. I'm using Zend Framework for my project.
我正在尝试将 PHP 数组转换为 jQuery 的 datetimepicker 的 javascript 数组以禁用某些日期。但我似乎无法在互联网上找到正确的答案。我正在为我的项目使用 Zend 框架。
<?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>
回答by Charaf JRA
To convert you PHP array to JS , you can do it like this :
要将您的 PHP 数组转换为 JS ,您可以这样做:
var js_array = [<?php echo '"'.implode('","', $disabledDaysRange ).'"' ?>];
or using JSON_ENCODE :
或使用 JSON_ENCODE :
var js_array =<?php echo json_encode($disabledDaysRange );?>;
Example without JSON_ENCODE:
没有 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>
Example with JSON_ENCODE :
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>
回答by Reza Baradaran Gazorisangi
The PHP json_encode function translates the data passed to it to a JSON string which can then be output to a JavaScript variable.The PHP json_encode function returns a string containing the JSON equivalent of the value passed to it.
PHP json_encode 函数将传递给它的数据转换为 JSON 字符串,然后该字符串可以输出到 JavaScript 变量。PHP json_encode 函数返回一个字符串,其中包含传递给它的值的等效 JSON。
<?php
$ar = array('apple', 'orange', 'banana', 'strawberry');
echo json_encode($ar); // ["apple","orange","banana","strawberry"]
?>
You can pass the JSON string output by json_encode to a JavaScript variable as follows:
您可以将 json_encode 输出的 JSON 字符串传递给 JavaScript 变量,如下所示:
<script type="text/javascript">
// pass PHP variable declared above to JavaScript variable
var ar = <?php echo json_encode($ar) ?>;
</script>
A numerically indexed PHP array is translated to an array literal in the JSON string. A JSON_FORCE_OBJECT option can be used if you want the array to be output as an object instead:
数字索引的 PHP 数组被转换为 JSON 字符串中的数组文字。如果您希望将数组作为对象输出,则可以使用 JSON_FORCE_OBJECT 选项:
<?php
echo json_encode($ar, JSON_FORCE_OBJECT);
// {"0":"apple","1":"orange","2":"banana","3":"strawberry"}
?>
Associative Array Example:
关联数组示例:
<?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>
Notice that PHP's associative array becomes an object literal in JavaScript. We use the JSON_PRETTY_PRINT option as the second argument to json_encode to display the output in a readable format.
请注意,PHP 的关联数组在 JavaScript 中变成了对象字面量。我们使用 JSON_PRETTY_PRINT 选项作为 json_encode 的第二个参数,以可读格式显示输出。
You can access object properties using dot syntax, as displayed with the alert included above, or square bracket syntax: book['title'].
您可以使用点语法(如上面包含的警报所示)或方括号语法访问对象属性:book['title']。
hereyou can find more information and details.
在这里您可以找到更多信息和详细信息。
回答by Piyush Sharma
When we convert PHP array into JS array then we get all values in string. For example:
当我们将 PHP 数组转换为 JS 数组时,我们会得到字符串中的所有值。例如:
var ars= '<?php echo json_encode($abc); ?>';
The issue in above method is when we try to get the first element of ars[0]
then it gives us bracket where as in we need first element as compare to bracket so the better way to this is
上述方法中的问题是,当我们尝试获取ars[0]
then的第一个元素时,它给了我们括号,因为我们需要第一个元素与括号进行比较,因此更好的方法是
var packing_slip_orders = JSON.parse('<?php echo json_encode($packing_slip_orders); ?>');
You should use json_parse
after json_encode
to get the accurate array result.
您应该使用json_parse
afterjson_encode
来获得准确的数组结果。
回答by TemiGiwa
Have you tried using json_encode http://php.net/manual/en/function.json-encode.php
您是否尝试过使用 json_encode http://php.net/manual/en/function.json-encode.php
It converts an array to a json string
它将数组转换为 json 字符串
回答by Ravi Kant Mishra
This may be a easy solution.
这可能是一个简单的解决方案。
var mydate = '<?php implode("##",$youdateArray); ?>';
var ret = mydate.split("##");
回答by raduns
<?php
$ConvertDateBack = Zend_Controller_Action_HelperBroker::getStaticHelper('ConvertDate');
$disabledDaysRange = array();
foreach($this->reservedDates as $dates) {
$date = $ConvertDateBack->ConvertDateBack($dates->reservation_date);
$disabledDaysRange[] = $date;
array_push($disabledDaysRange, $date);
}
$finalArr = json_encode($disabledDaysRange);
?>
<script>
var disabledDaysRange = <?=$finalArr?>;
</script>
回答by DevlshOne
<?php
$ConvertDateBack = Zend_Controller_Action_HelperBroker::getStaticHelper('ConvertDate');
$disabledDaysRange = array();
foreach($this->reservedDates as $dates) {
$date = $ConvertDateBack->ConvertDateBack($dates->reservation_date);
$disabledDaysRange[] = $date;
}
$disDays = size($disabledDaysRange);
?>
<script>
var disabledDaysRange = {};
var disDays = '<?=$disDays;?>';
for(i=0;i<disDays;i++) {
array.push(disabledDaysRange,'<?=$disabledDaysRange[' + i + '];?>');
}
............................
回答by Waqas Ahmed
<script> var disabledDaysRange = $disabledDaysRange ???? Please Help;
$(function() {
function disableRangeOfDays(d) {
in the above assign array to javascript variable "disableDaysRange"
在上面将数组分配给 javascript 变量“disableDaysRange”
$disallowDates = "";
echo "[";
foreach($disabledDaysRange as $disableDates){
$disallowDates .= "'".$disableDates."',";
}
echo substr(disallowDates,0,(strlen(disallowDates)-1)); // this will escape the last comma from $disallowDates
echo "];";
so your javascript var diableDateRange shoudl be
var diableDateRange = ["2013-01-01","2013-01-02","2013-01-03"];
回答by Ajay Yadav
You should need to convert your PHP array to javascript array using PHP syntax json_encode. json_encode convert PHP array to JSON string
您应该需要使用 PHP 语法 json_encode 将 PHP 数组转换为 javascript 数组。json_encode 将 PHP 数组转换为 JSON 字符串
Single Dimension PHP array to javascript array
单维 PHP 数组到 javascript 数组
<?php
var $itemsarray= array("Apple", "Bear", "Cat", "Dog");
?>
<script>
var items= <?php echo json_encode($itemsarray); ?>;
console.log(items[2]); // Output: Bear
// OR
alert(items[0]); // Output: Apple
</script>
Multi Dimension PHP array to javascript array
多维PHP数组到javascript数组
<?php
var $itemsarray= array(
array('name'='Apple', 'price'=>'12345'),
array('name'='Bear', 'price'=>'13344'),
array('name'='Potato', 'price'=>'00440')
);
?>
<script>
var items= <?php echo json_encode($itemsarray); ?>;
console.log(items[1][name]); // Output: Bear
// OR
alert(items[0][price]); // Output: Apple
</script>
For more detail, you can also check php array to javascript array
有关更多详细信息,您还可以检查php array to javascript array