Массив объектов из JS в PHP

-1

Я столкнулся с проблемой, которую я пытаюсь решить в течение нескольких часов, я надеюсь, что вы можете мне помочь. Итак, с самого начала у меня есть алгоритм в JavaScript, который генерирует переменные, которые я хочу сохранить в базе данных и распечатать для пользователя на веб-сайте. Для этого я думал, что я сгенерирую массив объектов для обработки всех переменных сразу (он генерирует столько переменных, сколько хочет пользователь, поэтому иногда их может быть несколько, иногда в несколько раз больше). Я думал, что будет легко отправлять и обрабатывать json, а затем быть доступным как обычные переменные в PHP. Итак, вот мои тестовые данные:

[[{"id_day":1},{"exercise":"some test exercise1"},{"repeats":2},{"energyWorth":300}],
[{"id_day":1},{"exercise":"some test exercise2"},{"repeats":2},{"energyWorth":300}],
[{"id_day":2},{"exercise":"some test exercise3"},{"repeats":2},{"energyWorth":300}],
[{"id_day":2},{"exercise":"some test exercise4"},{"repeats":2},{"energyWorth":300}],
[{"id_day":3},{"exercise":"some test exercise5"},{"repeats":2},{"energyWorth":300}],
[{"id_day":3},{"exercise":"some test exercise6"},{"repeats":2},{"energyWorth":300}],
[{"id_day":4},{"exercise":"some test exercise7"},{"repeats":2},{"energyWorth":300}],
[{"id_day":4},{"exercise":"some test exercise8"},{"repeats":2},{"energyWorth":300}],
[{"id_day":5},{"exercise":"some test exercise9"},{"repeats":2},{"energyWorth":300}],
[{"id_day":5},{"exercise":"some test exercise10"},{"repeats":2},{"energyWorth":300}],
[{"id_day":6},{"exercise":"some test exercise11"},{"repeats":2},{"energyWorth":300}],
[{"id_day":6},{"exercise":"some test exercise12"},{"repeats":2},{"energyWorth":300}]]

Я использовал ajax в своем скрипте для отправки этого массива объектов по этому коду:

$.ajax({
    url: 'test2.php',
    type: 'post',
    data: {"data_js" : JSON.stringify(plan)},
    success: function(data) {

    }
});

И хотел использовать em сейчас в PHP файле под названием test2.php, запустив код:

if (isset($_POST["data_js"])) {
$data_js = $_POST["data_js"];
$data_js = json_decode($data_js);

var_dump($data_js);
var_dump($data_js[0][1]);
}

Поэтому я успешно отправил свой массив объектов в переменную с именем $ data_js и декодировал em с помощью json для использования em в PHP. Проблема в том, что мой массив выглядит следующим образом:

array(20) {
  [0]=>
  array(4) {
    [0]=>
    object(stdClass)#1 (1) {
      ["id_day"]=>
      int(1)
    }
    [1]=>
    object(stdClass)#2 (1) {
      ["exercise"]=>
      string(37) "some test exercise1"
    }
    [2]=>
    object(stdClass)#3 (1) {
      ["repeats"]=>
      int(2)
    }
    [3]=>
    object(stdClass)#4 (1) {
      ["energyWorth"]=>
      int(300)
    }
  }
  [1]=>
  array(4) {
    [0]=>
    object(stdClass)#5 (1) {
      ["id_day"]=>
      int(1)
    }
    [1]=>
    object(stdClass)#6 (1) {
      ["exercise"]=>
      string(38) "some test exercise2"
    }
    [2]=>
    object(stdClass)#7 (1) {
      ["repeats"]=>
      int(2)
    }
    [3]=>
    object(stdClass)#8 (1) {
      ["energyWorth"]=>
      int(300)
    }
  }

и так далее. Дело в том, что я должен иметь доступ к каждой переменной, как в JS, я мог запускать данные [0].exercise, и это дало мне простой вывод "some test exercise1". Я пытался использовать, например, var_dump ($ data_js [0] [1]); который дает мне переменную, которую я хочу получить, но в этом формате:

object(stdClass)#2 (1) {
  ["exercise"]=>
  string(37) "some test exercise1"
}

И это далеко не то, что я хочу получить. Я мог бы использовать неправильные методы, делая это в первый раз, поэтому, если у вас есть идеи или скажите, что я просто делаю это неправильно, я был бы более чем счастлив. Кажется, что я потерялся во всей этой JS-JSON-PHP. Спасибо, ребята, заранее!

  • 2
    json_decode($data_js, true);
  • 0
    var_dump($data_js[0][1]->exercise); ?
Показать ещё 6 комментариев
Теги:
arrays

1 ответ

1

Вы должны использовать json_decode($data, true);

Второй параметр гарантирует, что данные будут декодированы в формате массива.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню