array_pop( array_keys( $arr))
<?php
$arr = [
2 => 1,
3 => 1,
4 => 1,
];
echo array_pop( array_keys( $arr)) . PHP_EOL; // 4
сейчас + N секунд
. Это время надо сохранить в localStorage: window.localStorage.setItem('timerEnd', endDate.getTime())
var finish = parseInt( window.localStorage.getItem('timerEnd'));
if(finish && finish > (new Date()).getTime()) { // есть таймер, который надо возобновить
}
let timer = document.getElementById('timer');
let indicator = document.getElementById('indicator');
let startButton = document.getElementById('startButton');
const lsKey = 'timerEnd';
let savedTime = parseInt(window.localStorage.getItem(lsKey));
if( savedTime) {
let D = new Date();
D.setTime(savedTime);
timerStart(D);
}
startButton.addEventListener('click', function(){
let D = new Date();
D.setTime( D.getTime() + 1000 * timer.value);
timerStart(D);
});
function timerStart (finishDate) {
let LS = window.localStorage;
let D = new Date();
let seconds = Math.round((finishDate - D) / 1000);
if (seconds <= 0) {
LS.removeItem(lsKey);
return;
}
LS.setItem( lsKey, finishDate.getTime()); // запомнили в LS
indicator.textContent = seconds;
setIndicator(true);
let timerId = setInterval(() => {
let seconds = Math.round((finishDate - new Date()) / 1000);
indicator.textContent = seconds;
if (seconds <= 0) {
LS.removeItem(lsKey);
clearInterval(timerId);
setIndicator(false);
}
}, 100);
}
function setIndicator(onOff) {
if(onOff) {
indicator.className = `green`;
} else {
indicator.className = `red`;
}
}
this.$root
, хотя в документации настаивают, что лучше вместо этого перейти на vuex.this.$root.$data
, как вариант. Писать их туда напрямую, или, более мягко, вызывать из компонента события на руте: this.$root.$emit('formFilled', {name:"Ivan", job:"developer"})
param1
и param2
. Поэтому при их изменении ничего не меняется.var app = new Vue({
el: '#app1',
data: {
param1: 3100,
param2: 200,
},
computed: {
resultAll: function() {
var p1 = this.param1
,p2 = this.param2
;
return {
one: p1 * 2,
two: p2 * 3,
three: p1 + p2
};
}
}
});
characterData: true
).function Equipment() {
var Bag = [];
this.addTool = function(tool) {
Bag.push(tool);
console.log("Added. Bag:", Bag);
}
}
function Tools() {
this.item1 = {
name: "item1",
price: 5,
count: 10
};
this.item2 = {
name: "item2",
price: 15,
count: 20
};
this.item3 = {
name: "item3",
price: 20,
count: 30
};
this.item4 = {
name: "item4",
price: 30,
count: 40
};
this.item5 = {
name: "item5",
price: 40,
count: 50
};
}
var equipment = new Equipment();
var tools = new Tools();
equipment.addTool(tools.item1); //
;(function(){
var today = new Date().getDate()
, checkInterval = 500 // ms
;
function check() {
if((new Date).getDate() !== today) window.location.reload(true);
else setTimeout( check, checkInterval);
}
check();
})();
foreach ($request->getParams() as $key => $param) {
foreach ($_REQUEST as $key => $param) {
$sign = "";
foreach($_REQUEST AS $key => $param) {
if ($key == 'hash' || $key == 'sign') continue;
$sign .=$param;
}
$secret = '3iiyZNDFaXgR6yZMxK'; // Настройки приложения – Защищённый ключ
$sig = $secret ? hash_hmac('sha256', $sign, $secret) : "";
if( $sig === $_REQUEST['sign']) {
echo "Подписи совпали.";
} else {
echo "Разные подписи, не хорошо.";
}