Задать вопрос
@newked

Как на PHP пушнуть в ассоциативный массив?

У меня есть конечный вид массива к которому надо привести мой массив чтобы все корректно работало.
Вот вид который мне нужен:
array(3) {
  ["seller"]=>
  object(SimpleXMLElement)#539 (1) {
    [0]=>
    object(SimpleXMLElement)#546 (0) {
    }
  }
  ["product_id"]=>
  int(2320617)
  ["payments"]=>
  array(2) {
    ["new1"]=>
    array(3) {
      ["type"]=>
      string(7) "payment"
      ["title"]=>
      string(9) "Тест1"
      ["fields"]=>
      array(3) {
        ["price"]=>
        string(5) "19999"
        ["currency"]=>
        string(3) "RUB"
        ["code"]=>
        string(4) "CODE"
      }
    }
    ["new2"]=>
    array(3) {
      ["type"]=>
      string(7) "payment"
      ["title"]=>
      string(9) "Тест2"
      ["fields"]=>
      array(3) {
        ["price"]=>
        string(4) "9999"
        ["currency"]=>
        string(3) "RUB"
        ["code"]=>
        string(4) "CODE"
      }
    }
  }
}


А вот это мой вид массива который у меня получается:

array(3) {
  ["seller"]=>
  object(SimpleXMLElement)#539 (1) {
    [0]=>
    object(SimpleXMLElement)#546 (0) {
    }
  }
  ["product_id"]=>
  int(2320617)
  ["payments"]=>
  array(16) {
    [0]=>
    array(1) {
      ["new1"]=>
      array(3) {
        ["type"]=>
        string(7) "payment"
        ["title"]=>
        string(3) "API"
        ["fields"]=>
        array(3) {
          ["price"]=>
          string(4) "1090"
          ["currency"]=>
          string(3) "RUB"
          ["code"]=>
          string(3) "api"
        }
      }
    }
    [1]=>
    array(1) {
      ["new2"]=>
      array(3) {
        ["type"]=>
        string(7) "payment"
        ["title"]=>
        string(5) "KASSA"
        ["fields"]=>
        array(3) {
          ["price"]=>
          string(4) "1090"
          ["currency"]=>
          string(3) "RUB"
          ["code"]=>
          string(9) "freekassa"
      }
    }
  }
}


Мой вид, который я получаю отличается от нужного мне вида и соответсвенно не работает ((
Мне надо чтобы мой php код возвращал правильную структуру.
Вот мой php код обработчик, который возвращает мне мой неверный вариант:

$methods = ... тут массив со всеми методами ... ;
$ready = array();
for($i = 0; $i < count($methods); $i++){
    $arr = array('new'.$i+1 => [
            'type' => 'payment',
            'title' => strval($methods[$i]->name),
            'fields' => [
                "price" => strval($methods[$i]->currencies->currency->price),
                "currency" => strval($methods[$i]->currencies->currency->currency),
                "code" => strval($methods[$i]->code)
            ],
        ]
    );
    array_push($ready, $arr);
}

$payments = array(
    "seller" => $seller_name,
    "product_id" => $product_id,
    'payments' => $ready,
    );

echo "<pre>";
    var_dump($payments);
echo "</pre>";


Ребят, я примерно понимаю где ошибка, но не знаю как ее исправить, знаний не хватает. У меня мой ["payments"]=> не верную структуру имеет. Возможно дело 2 минут и опытный кодер увидит проблему слету. Помогите плиз.
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Ну дык же...
$ready['new'.($i+1)] = array(
            'type' => 'payment',
            'title' => strval($methods[$i]->name),
            'fields' => array(
                "price" => strval($methods[$i]->currencies->currency->price),
                "currency" => strval($methods[$i]->currencies->currency->currency),
                "code" => strval($methods[$i]->code)
            )
);
//array_push($ready, $arr);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы