donqh00404 2016-11-26 16:52
浏览 27
已采纳

为什么我的阵列是3D而不是2D?

I've messed up a bit with my php and just wanted some help. At the moment my code takes the values that are selected from the dropdown boxes and puts the values along with their corresponding row in a table, into a 3D array. However, it only needs to be a 2D array but I don't know how to get rid of the first dimension of the 3D array. Php code:

<?php
function startmatching(){
    define( "DB_DSN", "mysql:host=localhost;dbname=FoodMatching");
    define( "DB_USERNAME", "root");
    define( "DB_PASSWORD", "" ); 

    // define the empty array to be filled from db

    $results = array();
    // any other php tasks that dont needthe ingcats
    // store sql

    $IngName = $_POST['IngredientName'];
    $IngCounter=0;
    while($IngCounter<count($IngName)){
        $sSQL = "SELECT IngID, IngName, Texture, Colour, Bitter, Sweet, Sour, Salty, Umami FROM IngredientCharacteristics WHERE IngName='$IngName[$IngCounter]'";
        // create an instance of the connection
        $conn   = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
        // prepare
        $st   = $conn->prepare( $sSQL );
        // execute the connection
        $st->execute();
        $counter=0;
        // while myslq has rows loop over them and store
        while($row = $st->fetch() ){
            $results[$counter][] = $row;
            $counter++;
        }
        $IngCounter++;
    }
    print_r($results);
}
?>

html:

 <form method='post' role="form" autocomplete="off">

    <div class="entry input-group col-xs-3">
        <?php //this function takes the ing id and ingname from ingredientcharacteristics table.
                    // if there are results stored create the select and loop over
                    if(!empty($aIngList)){
                        echo "<span class='form-control' style = 'float:left; font-size: 20px;font-family:'Helvetica Neue' ><select name = 'IngredientName[]' class = 'custom-dropdown__select custom-dropdown__select--white'>";
                        //class = 'custom-dropdown custom-dropdown--white'
                        echo "<option value='' default >Choose an Ingredient</option>";
                        foreach ($aIngList as $iIngID => $sIngName) {
                            echo "<option value='".$sIngName."' >".$sIngName."</option>";
                        }
                        echo "</select></span>";
                    }else{
                        echo "<p>No results available!</p>";
                    }
                ?>

        <span class="input-group-btn">
            <button class="btn btn-success btn-add" type="button">
                <span class="glyphicon glyphicon-plus"></span>
            </button>
            <button type="submit" class="hidden" name="startmatch" value ="startmatch" id="submit-form"></button>
        </span>
    </div>


</form>

Outputting $results gives the following:

Array

    (
        [0] =&gt; Array
            (
                [0] =&gt; Array
                    (
                        [IngID] =&gt; 2
                        [0] =&gt; 2
                        [IngName] =&gt; Apples Fresh
                        [1] =&gt; Apples Fresh
                        [Texture] =&gt; 4
                        [2] =&gt; 4
                        [Colour] =&gt; 8
                        [3] =&gt; 8
                        [Bitter] =&gt; 7
                        [4] =&gt; 7
                        [Sweet] =&gt; 3
                        [5] =&gt; 3
                        [Sour] =&gt; 4
                        [6] =&gt; 4
                        [Salty] =&gt; 8
                        [7] =&gt; 8
                        [Umami] =&gt; 9
                        [8] =&gt; 9
                    )

                [1] =&gt; Array
                    (
                        [IngID] =&gt; 2
                        [0] =&gt; 2
                        [IngName] =&gt; Apples Fresh
                        [1] =&gt; Apples Fresh
                        [Texture] =&gt; 4
                        [2] =&gt; 4
                        [Colour] =&gt; 8
                        [3] =&gt; 8
                        [Bitter] =&gt; 7
                        [4] =&gt; 7
                        [Sweet] =&gt; 3
                        [5] =&gt; 3
                        [Sour] =&gt; 4
                        [6] =&gt; 4
                        [Salty] =&gt; 8
                        [7] =&gt; 8
                        [Umami] =&gt; 9
                        [8] =&gt; 9
                    )

            )

    )

I don't know how to get rid of the extra array so any help would be appreciated :)

  • 写回答

1条回答 默认 最新

  • duanmaifu3428 2016-11-26 18:19
    关注

    The problem is this line:

    $results[$counter][] = $row;
    

    The solution is to change it to

    $results[] = $row;
    

    PHP will automatically append $row to $results meaning that you don't need your $counter variable at all.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?