循环遍历数组,如果需要添加,再次计数

时间:2015-04-08 14:07:22

标签: php mysql arrays

我有一组需要循环的数据,其中包含许多信息,Quantity,decimalLength(以英寸为单位),purchaseLength(以英尺为单位)。

我通过首先从结果中提取数据来设置我的循环>如果> While循环,那么我使用第二个循环遍历第一个结果的每个部分。我需要做的不是遍历最后一组数据并检查给定行的值是否小于或等于数组中的项,如果不是,请转到数组中的下一项并检查再次,如果它到达结束,那么它需要向数组添加一个新项目,并使用该值。

我已经开始了,但我不知道从哪里开始...代码如下:

<?php

    $servername = "redacted";
    $username   = "redacted";
    $password   = "redacted";
    $dbname     = "redacted";
    $conn       = new mysqli( $servername, $username, $password, $dbname );
    $sql        = "SELECT DISTINCT material FROM temptable WHERE material != 'MISC STEEL'";
    $result     = $conn->query( $sql );
    if ( $result->num_rows > 0 ) {
        while ( $row = $result->fetch_assoc() ) {
            $material = $row[ 'material' ];
            $sql2    = "SELECT cutLengths, material, decimalLength, purchaseLength FROM temptable WHERE material = '$material'";
            $result2 = $conn->query( $sql2 );
            if ( $result2->num_rows > 0 ) {
                echo "<h2>$material</h2><hr/>";
                while ( $row2 = $result2->fetch_assoc() ) {
                    $arr = array( );
                    array_push($arr, $row2[ 'decimalLength' ]);
                    for ( $i = 0; $i < $row2[ 'cutLengths' ]; $i++ ) {
                        echo $row2[ 'decimalLength' ] . "<br/>";
                        for ( $j = 0; $j < count( $arr ); $j++ ) {
                            if ( $row2[ 'decimalLength' ] <= $arr[ $j ] ) {
                                $arr[ $j ] = $arr[ $j ] - $row2[ 'decimalLength' ];
                                echo $arr[ $j ] . "<br/>";
                            }
                            elseif ( $row2[ 'decimalLength' ] > $arr[ $j ]  ) {
                                $arr[] = $row2[ 'decimalLength' ];
                            }
                        }
                    }
                }
                echo "<h4>(" . count( $arr ) . ") Total " . $row2[ 'purchaseLength' ] . "' Length(s)</h4>";
            }
        }
    }

?>

我知道我走在正确的轨道上,我知道可以做到,我只是不知道下一步该做什么。

编辑:我当前的代码输出:

角钢2 x 2 x 1/8

79.875
0
79.875
0
55.875
0
55.875
0
41.875
0
41.875
0
(2)总计&#39;长度(S)

它应该做的是看到79.875的值大于0,为数组添加一个新值,并将其用于数学。

0 个答案:

没有答案