Foreach с несколькими массивами (PHP) - PullRequest
0 голосов
/ 21 мая 2018

Я получил этот код:

$result = $phpSigep->calcPrecoPrazo($params);

foreach ($result->getResult() as $key => $shippingCorreios) {
$shipping->service = array(['name' => $shippingCorreios->get('servico')->get('nome')]);
$shipping->amount += $productsToShipping['withRules']['amount'];
dd($shipping);

$result->getResource() вот так:

array:39 [
  0 => CalcPrecoPrazoResposta {#652
    #servico: ServicoDePostagem {#653
      #codigo: "41068"
      #idServico: 109819
      #nome: "Pac 41068"
      #_failIfAtributeNotExiste: true
    }
    #valor: 62.24
    #prazoEntrega: 7
    #valorMaoPropria: 0.0
    #valorAvisoRecebimento: 5.0
    #valorValorDeclarado: 0.57
    #entregaDomiciliar: true
    #entregaSabado: false
    #erroCodigo: 0
    #erroMsg: null
    #_failIfAtributeNotExiste: true

Мне нужно запустить foreach и вернуть все массивы.Теперь этот код просто дает мне последний массив, потому что foreach очищает его данные при повторном запуске.

Любые предложения?

Ответы [ 4 ]

0 голосов
/ 21 мая 2018

Я нашел ответ.

$array[$key] = [
                                'name' => $shippingCorreios->get('servico')->get('nome'),
                                'value' => $shippingCorreios->get('valor'),
                                'dead line' => $shippingCorreios->get('prazo')
                                ];
0 голосов
/ 21 мая 2018

Что вы можете сделать, это сохранить их в новой переменной, например:

$allServices = [];
$result = $phpSigep->calcPrecoPrazo($params);

foreach ($result->getResult() as $key => $shippingCorreios) {
$currentService = array(['name' => $shippingCorreios->get('servico')->get('nome')]);
$allServices[] = $currentService;
$shipping->service = $currentService;
$shipping->amount += $productsToShipping['withRules']['amount'];
dd($shipping);

, а затем просто делать все, что вам нужно, с коллекцией $ allServices

0 голосов
/ 21 мая 2018

Вы создаете новый массив со следующим кодом:

$shipping->service = array(['name' => $shippingCorreios->get('servico')->get('nome')]);

Вы должны добавить свой массив следующим образом:

$shipping->service[] = 'name' => $shippingCorreios->get('servico')->get('nome');

Например:

$array = ['banana', 'apple'];
$array = array(['coconut']);

var_dump($array); 

вернет это

array(1) {
  [0]=>
  array(1) {
    [0]=>
    string(4) "coconut"
  }
}
0 голосов
/ 21 мая 2018

Вы повторно назначаете $shipping->service в каждой итерации.Чтобы добавить новый элемент в массив, используйте [] =:

foreach () {
    $shipping->service[] = array();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...