Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 形成多维数组_Php_Arrays - Fatal编程技术网

Php 形成多维数组

Php 形成多维数组,php,arrays,Php,Arrays,我在形成多维数组时遇到问题。 我从数据库接收数据,然后我需要创建数组,该数组将通过api发送以进行打包 首先,我从表单中获取值 $idNaloga = $_GET['idNaloga']; $duzina = $_GET['duzina']; $sirina = $_GET['sirina']; $visina = $_GET['visina']; 首先,我查询拖车: $truckTrailer = array( 'w' => $sirina, 'h' => $vi

我在形成多维数组时遇到问题。 我从数据库接收数据,然后我需要创建数组,该数组将通过api发送以进行打包

首先,我从表单中获取值

$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 */