在foreach php中创建多维数组
我有一个foreach,它通过API检查多个请求,并只选择那些包含前缀为sku==“MCA”的项目的请求。但是,正如我在下面所做的,我只能在数组中放置一个订单,而我必须放置所有请求在foreach php中创建多维数组,php,arrays,multidimensional-array,foreach,Php,Arrays,Multidimensional Array,Foreach,我有一个foreach,它通过API检查多个请求,并只选择那些包含前缀为sku==“MCA”的项目的请求。但是,正如我在下面所做的,我只能在数组中放置一个订单,而我必须放置所有请求 foreach($listaPedidos as $pedido) : $i = 0; $somatorio = array(); $resulta = $client->salesOrderInfo($session, $pedido->increment_id); f
foreach($listaPedidos as $pedido) :
$i = 0;
$somatorio = array();
$resulta = $client->salesOrderInfo($session, $pedido->increment_id);
foreach($resulta->items as $item) :
$sku = $item->sku;
if (substr($sku, 0,3) == "MCA") :
$email = $pedido->customer_email;
$codCli = idClienteMca($conn, $session, $client, $email);
$dataCadastro = date("Y-m-d H:i:s");
$qtdItens = ++$i;
$somatorio[] = (float)$item->row_total;
$totalPedido = array_sum($somatorio);
$observacao = "";
$boleto = "0";
$transportadora = "";
$todosPedidos = array(
"codcli" => $codCli,
"datacadastro" => $dataCadastro,
"qtditens" => $qtdItens,
"totalpedido" => $totalPedido,
"observacao" => $observacao,
"boleto" => $boleto
);
endif;
endforeach;
endforeach;
我预期的结果是:
array(2) {
array(6) {
["codcli"]=>
string(3) "576"
["datacadastro"]=>
string(19) "2017-12-28 17:22:24"
["qtditens"]=>
int(3)
["totalpedido"]=>
float(74.19)
["observacao"]=>
string(0) ""
["boleto"]=>
string(1) "0"
}
array(6) {
["codcli"]=>
string(3) "890"
["datacadastro"]=>
string(19) "2017-12-28 17:55:24"
["qtditens"]=>
int(4)
["totalpedido"]=>
float(154.89)
["observacao"]=>
string(0) ""
["boleto"]=>
string(1) "0"
}
}
我如何带来所有的请求,而不仅仅是最后一次迭代
Tks 问题您一次又一次地在foreach()
中过度写入$todosPedidos
变量,这就是为什么您只得到最后一个结果
解决方案:-
$todosPedidos=[]代码>在第一个foreach()之前
$todosPedidos
更改为$todosPedidos[]
$todosPedidos = [];
foreach($listaPedidos as $pedido) :
$i = 0;
$somatorio = array();
$resulta = $client->salesOrderInfo($session, $pedido->increment_id);
foreach($resulta->items as $item) :
$sku = $item->sku;
if (substr($sku, 0,3) == "MCA") :
$email = $pedido->customer_email;
$codCli = idClienteMca($conn, $session, $client, $email);
$dataCadastro = date("Y-m-d H:i:s");
$qtdItens = ++$i;
$somatorio[] = (float)$item->row_total;
$totalPedido = array_sum($somatorio);
$observacao = "";
$boleto = "0";
$transportadora = "";
$todosPedidos[] = array(
"codcli" => $codCli,
"datacadastro" => $dataCadastro,
"qtditens" => $qtdItens,
"totalpedido" => $totalPedido,
"observacao" => $observacao,
"boleto" => $boleto
);
endif;
endforeach;
endforeach;
print_r($todosPedidos); // to check that all data coming or not?
英语pls@tadman打扰一下这里要注意的是,
if…:代码>和endif
相当不标准。虽然有效,但大多数代码库都使用传统的if{…}
结构,这仅仅是因为它不太冗长!但结果却出乎意料。现在的答案是6个数组,我只期望2个。我在数据库中有两个相等的顺序,我需要在数组中主要写入项的总数以及请求的总值。但这样的结果是每个产品都有一个循环。每个订单我需要一个循环。