Php 形成多维数组
我在形成多维数组时遇到问题。 我从数据库接收数据,然后我需要创建数组,该数组将通过api发送以进行打包 首先,我从表单中获取值Php 形成多维数组,php,arrays,Php,Arrays,我在形成多维数组时遇到问题。 我从数据库接收数据,然后我需要创建数组,该数组将通过api发送以进行打包 首先,我从表单中获取值 $idNaloga = $_GET['idNaloga']; $duzina = $_GET['duzina']; $sirina = $_GET['sirina']; $visina = $_GET['visina']; 首先,我查询拖车: $truckTrailer = array( 'w' => $sirina, 'h' => $vi
$idNaloga = $_GET['idNaloga'];
$duzina = $_GET['duzina'];
$sirina = $_GET['sirina'];
$visina = $_GET['visina'];
首先,我查询拖车:
$truckTrailer = array(
'w' => $sirina,
'h' => $visina,
'd' => $duzina,
'max_wg' => '15000',
'id' => $kamion1
);
然后我使用这些值进行查询
$stmt = "SELECT DISTINCT(nazivPanela) as paket FROM `paneli_pakovanja_2017` WHERE idNaloga = $idNaloga";
$q = $conn->query($stmt);
$nazivPaketa = array();
while($r = $q -> fetch()){
$nazivPaketa[] = $r['paket'];
}
一旦我得到数据包的名称,我就对每个数据包进行查询。在这个查询中,我应该为每个看起来
array(
'w' => '100',
'h' => '90',
'd' => '1350',
'q' => '18',
'vr' => '1',
'wg' => '0',
'id' => 'Paket'
),
但是我没有,我从下面的查询中只得到一个数组,但是我应该得到7
foreach($nazivPaketa as $paket) {
$stmt2 = "SELECT max(duzina) as duzina, visinaPaketa, sirinaPaketa, nazivPanela FROM `paneli_pakovanja_2017` WHERE idNaloga = $idNaloga AND nazivPanela = $paket";
$q = $conn -> query($stmt2);
while($r=$q->fetch()) {
$paketi = array(
'w' => $r['sirinaPaketa'],
'h' => $r['visinaPaketa'],
'd' => $r['duzina'],
'q' => '1',
'vr' => '1',
'wg' => '0',
'id' => $r['nazivPanela']
);
}
}
最后,我需要一个如下所示的表单数组:
$data = array(
'bins' => array( // this array I have it is truck trailer
array(
'w' => '250',
'h' => '360',
'd' => '1360',
'max_wg' => '15000',
'id' => '1'
)
),
'items' => array( *// array I should get from $paketi
array(
'w' => '100',
'h' => '90',
'd' => '1350',
'q' => '18',
'vr' => '1',
'wg' => '0',
'id' => 'Paket'
),
array(
'w' => '100',
'h' => '90',
'd' => '900',
'q' => '23',
'vr' => '1',
'wg' => '0',
'id' => 'Paket2'
),
array(
'w' => '100',
'h' => '90',
'd' => '400',
'q' => '18',
'vr' => '1',
'wg' => '0',
'id' => 'Paket'
)
),
不知道我使用的方法是否正确,但需要某种帮助您正在覆盖循环中的$packeti变量。。。您应该将该值添加到数组中
$q = $conn -> query($stmt2);
$paketi = array();
while($r=$q->fetch()) {
$paketi[] = array(
'w' => $r['sirinaPaketa'],
'h' => $r['visinaPaketa'],
'd' => $r['duzina'],
'q' => '1',
'vr' => '1',
'wg' => '0',
'id' => $r['nazivPanela']
);
}
}
$packeti[]将确保将您的包信息添加到阵列中,而不是完全替换它。未测试,但您可以尝试下面的方法。变量
$paketi
在循环中的每次迭代中都会被覆盖,但您需要为所有查询存储它的记录,因此在外部循环之前声明一个数组,并将内部循环中的内容添加到该数组中
$data=array();
foreach( $nazivPaketa as $paket ) {
$stmt2 = "SELECT max(duzina) as duzina, visinaPaketa, sirinaPaketa, nazivPanela
FROM `paneli_pakovanja_2017`
WHERE idNaloga = $idNaloga AND nazivPanela = $paket";
$q = $conn->query( $stmt2 );
$paketi=array();
while( $r=$q->fetch() ) {
$paketi[] = array(
'w' => $r['sirinaPaketa'],
'h' => $r['visinaPaketa'],
'd' => $r['duzina'],
'q' => '1',
'vr' => '1',
'wg' => '0',
'id' => $r['nazivPanela']
);
}
$data[]=$paketi;
}
echo '<pre>',print_r($data,1),'</div>';
$data['bins']=$truckTrailer; /* assuming `$truckTrailer` is an array */