PHP数组()到javascript数组()[重复]
Posted
技术标签:
【中文标题】PHP数组()到javascript数组()[重复]【英文标题】:PHP array() to javascript array() [duplicate] 【发布时间】:2013-09-18 00:21:56 【问题描述】:我正在尝试将 php 数组转换为 jQuery 的 datetimepicker 以禁用某些日期的 javascript 数组。但我似乎无法在互联网上找到正确的答案。我正在为我的项目使用 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>
【问题讨论】:
你可以使用array.push函数来推送jquery数组中的值 你试过“var_dump($disabledDaysRange)”吗?只是看看你在 PHP 中的内容是否与你在 jQuery 中需要的内容相对应 JSON_ENCODE 检查这个php.net/manual/fr/function.json-encode.php 没有 jQuery 数组这样的东西。 JQuery 对象是 DOM 节点的集合(类似数组),但您不能通过网络发送 DOM 节点。您的意思是“javascript 数组”吗? @Oliboy50 当我 vardump 它时返回:array(2) [0]=> string(10) "13/09/2013" [1]=> string(10) "24/ 09/2013" 【参考方案1】:要将您的 PHP 数组转换为 JS,您可以这样做:
var js_array = [<?php echo '"'.implode('","', $disabledDaysRange ).'"' ?>];
或使用 JSON_ENCODE :
var js_array =<?php echo json_encode($disabledDaysRange );?>;
不带 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>
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>
【讨论】:
json_encode
怎么样?这不是“更安全”的选择吗?
两个都不错,我加第二个方案
@FaceOfJock 两个例子都可以,但是日期时间选择器现在没有打开。
@user1528407 你能告诉我你在浏览器的控制台说什么
@Charafjra 感谢完美的作品。为你 +1【参考方案2】:
PHP json_encode 函数将传递给它的数据转换为 JSON 字符串,然后可以将其输出到 JavaScript 变量。PHP json_encode 函数返回一个字符串,其中包含与传递给它的值等效的 JSON。
<?php
$ar = array('apple', 'orange', 'banana', 'strawberry');
echo json_encode($ar); // ["apple","orange","banana","strawberry"]
?>
您可以将 json_encode 输出的 JSON 字符串传递给 JavaScript 变量,如下所示:
<script type="text/javascript">
// pass PHP variable declared above to JavaScript variable
var ar = <?php echo json_encode($ar) ?>;
</script>
数字索引的 PHP 数组被转换为 JSON 字符串中的数组文字。如果您希望将数组作为对象输出,则可以使用 JSON_FORCE_OBJECT 选项:
<?php
echo json_encode($ar, JSON_FORCE_OBJECT);
// "0":"apple","1":"orange","2":"banana","3":"strawberry"
?>
关联数组示例:
<?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>
请注意,PHP 的关联数组在 JavaScript 中变成了对象字面量。我们使用 JSON_PRETTY_PRINT 选项作为 json_encode 的第二个参数来以可读格式显示输出。
您可以使用点语法(如上面包含的警报所示)或方括号语法访问对象属性:book['title']。
here你可以找到更多的信息和细节。
【讨论】:
【参考方案3】:当我们将 PHP 数组转换为 JS 数组时,我们会得到字符串中的所有值。 例如:
var ars= '<?php echo json_encode($abc); ?>';
上述方法的问题是,当我们尝试获取ars[0]
的第一个元素时,它给了我们括号,因为我们需要第一个元素来与括号进行比较,所以更好的方法是
var packing_slip_orders = JSON.parse('<?php echo json_encode($packing_slip_orders); ?>');
您应该在json_encode
之后使用json_parse
以获得准确的数组结果。
【讨论】:
【参考方案4】:您是否尝试过使用 json_encode http://php.net/manual/en/function.json-encode.php
它将数组转换为json字符串
【讨论】:
虽然这在理论上可以回答问题,it would be preferable 在此处包含答案的基本部分(例如代码示例),并提供链接以供参考。如果示例正确,我可能会投票。【参考方案5】:这可能是一个简单的解决方案。
var mydate = '<?php implode("##",$youdateArray); ?>';
var ret = mydate.split("##");
【讨论】:
智能简单的解决方案:)【参考方案6】:<?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 + '];?>');
............................
【讨论】:
【参考方案7】: <script> var disabledDaysRange = $disabledDaysRange ???? Please Help;
$(function()
function disableRangeOfDays(d)
在上面将数组赋值给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"];
【讨论】:
你怎么知道$disableDates
是字符串(此外,字符串不包含撇号)?最好使用json_encode
。
因为我认为日期可以用字符串格式
撇号呢?【参考方案8】:
<?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>
【讨论】:
不要在客户端解码 JSON。 javascript 引擎已经为您做到了。【参考方案9】:您应该需要使用 PHP 语法 json_encode 将您的 PHP 数组转换为 javascript 数组。 json_encode 将 PHP 数组转换为 JSON 字符串
单维 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>
多维 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>
更多详情,您也可以查看php array to javascript array
【讨论】:
以上是关于PHP数组()到javascript数组()[重复]的主要内容,如果未能解决你的问题,请参考以下文章