Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.11.2014, 19:12
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

многомерный массив из php
доброго времени суток всем) у меня есть некий код на php, мне надо его перевести на js, впрочем я справился, весь код перевёл кроме нижеследующего участка кода:
$integ = array(
	$df < 31556926 => array('ay', 2628000),
	$df < 2629744 => array('həftə', 604800),
	$df < 604800 => array('gün', 86400),
	$df < 86400 => array('saat', 3600),
	$df < 3600 => array('dəqiqə', 60),
	$df < 60 => array('saniyə', 1)
); // переменная $df уже создана, просто не вижу смысла весь код прописать, мне главное этот массив как-то спилить под js :)


буду очень признателен если поможете и этот маленький участок тоже перевести в js
Ответить с цитированием
  #2 (permalink)  
Старый 07.11.2014, 20:11
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Tecvid Посмотреть сообщение
доброго времени суток всем) у меня есть некий код на php, мне надо его перевести на js, впрочем я справился, весь код перевёл кроме нижеследующего участка кода:
$integ = array(
	$df < 31556926 => array('ay', 2628000),
	$df < 2629744 => array('həftə', 604800),
	$df < 604800 => array('gün', 86400),
	$df < 86400 => array('saat', 3600),
	$df < 3600 => array('dəqiqə', 60),
	$df < 60 => array('saniyə', 1)
); // переменная $df уже создана, просто не вижу смысла весь код прописать, мне главное этот массив как-то спилить под js :)


буду очень признателен если поможете и этот маленький участок тоже перевести в js
в лоб
(function () {
	var df = 3601;
	var mas = [ 
		[ 31556926, ['ay', 2628000]   ], 
		[ 2629744,  ['həftə', 604800] ], 
		[ 604800,   ['gün', 86400]    ], 
		[ 86400,    ['saat', 3600]    ], 
		[ 3600,     ['dəqiqə', 60]    ], 
		[ 60,       ['saniyə', 1]     ] 
	];
	var arr = [];
	for ( var i = 0, len = mas.length; i < len; i++ ) {
		var el = mas[i][1];
		if ( df < mas[i][0]) {
			arr[1] = el;
		} else {
			arr[0] = el;
		}
	}
	console.log(arr);
})();
Ответить с цитированием
  #3 (permalink)  
Старый 07.11.2014, 20:31
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

спасибо большое, очень признателен, но вот теперь не могу в код встроить это, в js не так уж силён по сравнению с php :/ всмысле вставил, подправил названия переменных, но код не выполняется, в консоле тоже пусто, в целом код выглядит так

function ago(time) {
	var df = time() - time;

	if (df <= 19) {
		return 'Elə indi';
	}
	else if (df > 19 && df <= 59) {
		return 'Bir neçə saniyə əvvəl';
	}

	// тут должно быть тот кусочек, естесвенно его прописал уже без (function() { и т д
	
	var value = Math.floor(df/intg[1][1]);
	var ago = value + ' ' + intg[1][0];

	var days = new Array ('Bazar', 'Bazar ertəsi', 'Çərşənbə axşamı', 'Çərşənbə', 'Cümə axşamı', 'Cümə', 'Şənbə');
	var day = days[date('w', time)];

	var months = new Array ('', 'Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', 'Noyabr', 'Dekabr');
	var month = months[date('m', time)];

	if (ago == '1 gün') {
		return 'Dünən ' + date('H:i', time);
	}
	else if ((value == 2 || value == 3 || value == 4 || value == 5 || value == 6 || value == 7) && intg[1][0] == 'gün') {
		return day + ' günü ' + date('H:i', time);
	}
	else if (value <= 59 && intg[1][0] == 'dəqiqə' ||  intg[1][0] == 'saat') {
		return ago + ' əvvəl';
	}
	else {
		return date('d', time) + ' ' + month + ' ' + date('Y H:i', time);
	}
}


как поступить?

кстати вот оригинальный код php

function ago($time) {
	$df = time() - (int)$time;

	if ($df <= 19) {
		return 'Elə indi';
	}
	elseif ($df > 19 && $df <= 59) {
		return 'Bir neçə saniyə əvvəl';
	}

	$int = array(
		$df < 31556926 => array('ay', 2628000),
		$df < 2629744 => array('həftə', 604800),
		$df < 604800 => array('gün', 86400),
		$df < 86400 => array('saat', 3600),
		$df < 3600 => array('dəqiqə', 60),
		$df < 60 => array('saniyə', 1)
	);

	$value = floor($df/$int[1][1]);
	$ago = $value.' '.$int[1][0];

	$days = array('Bazar', 'Bazar ertəsi', 'Çərşənbə axşamı', 'Çərşənbə', 'Cümə axşamı', 'Cümə', 'Şənbə');
	$day = $days[date('w', $time)];

	$months = array('', 'Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', 'Noyabr', 'Dekabr');
	$month = $months[(int)date('m', $time)];

	if ($ago == '1 gün') {
		return 'Dünən '.date('H:i', $time);
	}
	elseif (($value == 2 || $value == 3 || $value == 4 || $value == 5 || $value == 6 || $value == 7) && $int[1][0] == 'gün') {
		return $day.' günü '.date('H:i', $time);
	}
	elseif ($value <= 59 && $int[1][0] == 'dəqiqə' ||  $int[1][0] == 'saat') {
		return $ago.' əvvəl';
	}
	else {
		return (int)date('d', $time).' '.$month.' '.date('Y H:i', $time);
	}
}

Последний раз редактировалось Tecvid, 07.11.2014 в 20:36.
Ответить с цитированием
  #4 (permalink)  
Старый 07.11.2014, 21:03
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

почитай про return
и сделай полный тестовый пример, для запуска [html run
Ответить с цитированием
  #5 (permalink)  
Старый 07.11.2014, 21:07
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

прочту, но разве return в js чем то отличается от того что в php? если нет, то я его знаю) или вы имеете ввиду что тот участок кода в функцию обернуть как это сделали вы и вернуть результат?
Ответить с цитированием
  #6 (permalink)  
Старый 07.11.2014, 21:28
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Tecvid
прочту, но разве return в js чем то отличается от того что в php? если нет, то я его знаю) или вы имеете ввиду что тот участок кода в функцию обернуть как это сделали вы и вернуть результат?
ты не привёл полного тестового примера, поэтому остаётся лишь гадать, что там у тебя не получается: return сработал, функцию забыл вызвать, ...
Ответить с цитированием
  #7 (permalink)  
Старый 07.11.2014, 21:42
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

полный код такой:

function time() {
     // бла бла.. p.s: выполняет аналогичную функию из php
}

function date(format, timestamp) {
     // бла бла.. p.s: выполняет аналогичную функию из php
}

function ago(time) {
	var df = time() - time;

	if (df <= 19) {
		return 'Elə indi';
	}
	else if (df > 19 && df <= 59) {
		return 'Bir neçə saniyə əvvəl';
	}

	var mas = [ 
		[ 31556926, ['ay', 2628000]   ], 
		[ 2629744,  ['həftə', 604800] ], 
		[ 604800,   ['gün', 86400]    ], 
		[ 86400,    ['saat', 3600]    ], 
		[ 3600,     ['dəqiqə', 60]    ], 
		[ 60,       ['saniyə', 1]     ] 
	];
	var intg = [];
	for ( var i = 0, len = mas.length; i < len; i++ ) {
		var el = mas[i][1];
		if ( df < mas[i][0]) {
			intg[1] = el;
		} else {
			intg[0] = el;
		}
	}

	var value = Math.floor(df/intg[1][1]);
	var ago = value + ' ' + intg[1][0];

	var days = new Array ('Bazar', 'Bazar ertəsi', 'Çərşənbə axşamı', 'Çərşənbə', 'Cümə axşamı', 'Cümə', 'Şənbə');
	var day = days[date('w', time)];

	var months = new Array ('', 'Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', 'Noyabr', 'Dekabr');
	var month = months[date('m', time)];

	if (ago == '1 gün') {
		return 'Dünən ' + date('H:i', time);
	}
	else if ((value == 2 || value == 3 || value == 4 || value == 5 || value == 6 || value == 7) && intg[1][0] == 'gün') {
		return day + ' günü ' + date('H:i', time);
	}
	else if (value <= 59 && intg[1][0] == 'dəqiqə' ||  intg[1][0] == 'saat') {
		return ago + ' əvvəl';
	}
	else {
		return date('d', time) + ' ' + month + ' ' + date('Y H:i', time);
	}
}

// == ОТЛАДКА ==

var t = time();
alert(ago(t));
Ответить с цитированием
  #8 (permalink)  
Старый 07.11.2014, 21:43
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

где кнопка run
Ответить с цитированием
  #9 (permalink)  
Старый 07.11.2014, 21:47
Профессор
Отправить личное сообщение для Tecvid Посмотреть профиль Найти все сообщения от Tecvid
 
Регистрация: 13.12.2013
Сообщений: 175

а как его добавить?) на форуме редко приходится быть, не знаю что где тут подробно, поискал не нашёл в редакторе
Ответить с цитированием
  #10 (permalink)  
Старый 07.11.2014, 21:51
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от Tecvid
а как его добавить?) на форуме редко приходится быть, не знаю что где тут подробно, поискал не нашёл в редакторе
Сообщение от bes
для запуска [html run

попутно верни в time что-нибудь типа 3601 и проверь эти строки
Цитата:
function ago(time) {
var df = time() - time;
в общем доведи пример до ума, чтобы хотя бы в консоли не было ошибок
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив из PHP в JS Spayn Общие вопросы Javascript 2 29.07.2014 11:26
Как получить javasript массив из php? dima_tr AJAX и COMET 6 01.02.2013 03:37
преобразовать php массив в массив js zebulun Общие вопросы Javascript 12 02.09.2011 00:49
ajax и многомерный массив cat9 AJAX и COMET 1 03.10.2010 15:25
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14