Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод массива из php в JavaScript 
:(
    Опции темы
serezhka1986
Дата 9.8.2012, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: нет
Всего: 0



Добрый день!
Прошу помощи. У меня есть массив php примерно такого содержания:
Код

Array
(
    [0] => Array
        (
            [0] => 2000-01-06
            [1] => 855
        )

    [1] => Array
        (
            [0] => 2000-01-07
            [1] => 860
        )

    [2] => Array
        (
            [0] => 2000-01-11
            [1] => 858
        )

    [3] => Array
        (
            [0] => 2000-01-12
            [1] => 877
        )

    [4] => Array
        (
            [0] => 2000-01-13
            [1] => 883
        )

    [5] => Array
        (
            [0] => 2000-01-14
            [1] => 885
        )

    [6] => Array
        (
            [0] => 2000-01-15
            [1] => 891
        )

    [7] => Array
        (
            [0] => 2000-01-18
            [1] => 891
        )

    [8] => Array
        (
            [0] => 2000-01-19
            [1] => 902
        )

    [9] => Array
        (
            [0] => 2000-01-20
            [1] => 904
        )

    [10] => Array
        (
            [0] => 2000-01-21
            [1] => 910
        )

    [11] => Array
        (
            [0] => 2000-01-22
            [1] => 912
        )

    [12] => Array
        (
            [0] => 2000-01-25
            [1] => 912
        )

    [13] => Array
        (
            [0] => 2000-01-26
            [1] => 905
        )

    [14] => Array
        (
            [0] => 2000-01-27
            [1] => 902
        )

     ......

    [N] => Array
        (
            [0] => 2010-01-01
            [1] => 850
        )
)

Мне же из всего этого дела надо прийти к такому массиву в JS:
Код

      [
        [ new Date("2000/01/06"), 855 ],
        [ new Date("2000/01/07"), 860],
        [ new Date("2000/01/11"), 858 ],
        [ new Date("2000/01/12"), 877],
        [ new Date("2000/01/13"), 883 ],
        .......
        [ new Date("2010/01/01"), 850 ]
      ]

В php могу сменить формат с ГГГГ-ММ-ДД на ГГГГ/ММ/ДД, не ведь это не решает проблемы. Подскажите решение...
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
mullih
Дата 9.8.2012, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 19.12.2006

Репутация: 1
Всего: 2



вам надо ветку поменять на php, вопрос к javascript не имеет отношения
PM MAIL WWW Skype   Вверх
serezhka1986
Дата 9.8.2012, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: нет
Всего: 0



Ну почему же? Я ищу решение на JS, поскольку массив пхп могу привести к практически любому виду, и передать его в переменную, например, myArray.
А вот как уже получить финальный результат? Как туда добавить  new Date? Что-то ничего в голову не лезет...  smile

Добавлено через 1 минуту и 47 секунд
Какого вида должна быть переменная myArray, чтобы с ней дальше можно было работать?
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
нуп
Дата 9.8.2012, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 12
Всего: 33



Ну так все правильно делаете, в чем проблема то?
PM MAIL   Вверх
ksnk
Дата 9.8.2012, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



serezhka1986, Откуда берется исходный массив? В каом виде в массиве хранится время? Из базы? В виде строки?

Что нужно сделать? Что-то вроде json_encode, но с восстановлением данных типа Data?

Добавлено через 6 минут и 47 секунд
Цитата(ksnk @  9.8.2012,  19:38 Найти цитируемый пост)
то-то вроде json_encode, но с восстановлением данных типа Data? 

В этом случае - только писать свой json_encode. Это не так сложно, как может показаться, достаточно нагуглить в меру разумный пример. А если массив  только такого вида, то и вообще компактно получится.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 9.8.2012, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



Код

echo "[".implode(",", array_map($source_array, function ($el) {return '[ new Date(' . str_replace('-', '/', $ar[0]) .'),' . $ar[1] . ']';}))."]"

PM MAIL   Вверх
serezhka1986
Дата 10.8.2012, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: нет
Всего: 0



Сделал вот такое, но дальше не знаю что делать. Может быть спорол фигню:
Строю массив в пхп с запроса (CMS Битрикс):
Код

$result ="";
$a = 0;
while ($row = $myresult->Fetch())
{
    if ($a !== 0) {$result .=', ';}
    $result .= '[new Date("'.$row["MYDAY"].'"),'.$row["PROPERTY_71"].']';
    $a = 1;            
}
echo $result;

Здесь MYDAY - это дата уже нужного формата ГГГГ/ММ/ДД (DATE_FORMAT(PROPERTY_69, '%Y/%m/%d') as MYDAY).
В js выполняю функцию:
Код

function testscript() {
    var actuality = "115";
    $.ajax({
            type: "POST",
            url: "test_script.php",
            data: "actuality="+actuality,
            cache: false,
            success: function(responce){alert (responce+"\n"+typeof(responce));}
                         });    
}

Получаю такой результат:
Код

[new Date("2000/01/06"),855], [new Date("2000/01/07"),860], [new Date("2000/01/11"),858], [new Date("2000/01/12"),877], [new Date("2000/01/13"),883] ..., [new Date("2010/01/01"),850]

Тип данных - string.
Как мне из всего этого дела сделать массив?  smile 
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
нуп
Дата 10.8.2012, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 12
Всего: 33



К $.ajax добавить параметр dataType: 'json'
PM MAIL   Вверх
serezhka1986
Дата 10.8.2012, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: нет
Всего: 0



Цитата(нуп @  10.8.2012,  11:09 Найти цитируемый пост)
К $.ajax добавить параметр dataType: 'json'

Походу ajax error, вообще ничего не происходит и не выводится в alert.
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
нуп
Дата 10.8.2012, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 12
Всего: 33



Значит заголовок какой то другой стоит. Пробуйте так


Код

$.ajax({
            type: "POST",
            url: "test_script.php",
            data: "actuality="+actuality,
            cache: false,
            success: function(responce){
                   var json = $.parseJSON( responce)
                         
});    

PM MAIL   Вверх
serezhka1986
Дата 10.8.2012, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: нет
Всего: 0



Тоже самое

Добавлено через 7 минут и 38 секунд
Отредактировал немного пхп скрипт
Код

while ($row = $myresult->Fetch())
{
     $result[] = array($row["MYDAY"], $row["PROPERTY_71"]);
}
print_r(json_encode($result));

В js прописал:
Код

function testscript() {
    var actuality = "115";
    $.ajax({
        type: "POST",
        url: "test_script.php",
        data: "actuality="+actuality,
        cache: false,
        success: function(responce){ var json = $.parseJSON(responce); alert (json+"\n"+typeof(json));}
                         });    
}

Получаю:
Код

2000/01/06,855,2000/01/07,860,2000/01/11,858,2000/01/12,877,...,2010/01/01,850

Тип данных - object
Может с этим как-то можно сделать?

Это сообщение отредактировал(а) serezhka1986 - 10.8.2012, 11:54
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
нуп
Дата 10.8.2012, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 12
Всего: 33



Я не пойму в каком виде пхп отдает массив? Просто сделайте так с массивом: echo json_encode($my_array); и все
PM MAIL   Вверх
ksnk
Дата 10.8.2012, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Цитата(serezhka1986 @  10.8.2012,  11:54 Найти цитируемый пост)
Тип данных - object

Хм... открою страшную тайну из неисследованных глубин языка JavaScript. 
typeof от массива вернет object.

Чтобы проверить на массив - нужно пользоваться instanceof
Код

alert([typeof([]),[] instanceof Array]);





--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0608 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.