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>
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>
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の2番目の引数として使用して、読み取り可能な形式で出力を表示します。
上記のアラートとともに表示されるドット構文、または角括弧構文:book ['title']を使用して、オブジェクトのプロパティにアクセスできます。
こちら 詳細および詳細を確認できます。
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_parse
の後にjson_encode
を使用する必要があります。
これは簡単な解決策かもしれません。
var mydate = '<?php implode("##",$youdateArray); ?>';
var ret = mydate.split("##");
Json_encodeを使用してみましたか http://php.net/manual/en/function.json-encode.php
配列をJSON文字列に変換します
<?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 + '];?>');
}
............................
<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"];
PHP配列をJavaScript配列に変換する必要があります。PHP構文json_encode。json_encode convert PHP= array to JSON string
シングルディメンションPHP array to javascript array
<?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 array to javascript array
<?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配列からjavascript配列 も確認できます。
<?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>