簡體   English   中英

while每次迭代時使用array + array

[英]array + array on each iteration of the while

如何將一個數組添加到另一個數組? 我的意思是加法,而不是在數組末尾添加元素。 我有一個while結構,我希望它在每次迭代時添加值。

嘗試了一些變體,例如$final_array += $final_array; 但是我找不到解決方案,我也不知道如何拼寫才能在SO / Google上找到東西。

這是代碼:

<?php
$i = 0;
while ($i < 10){
    $i++;
    $sql =  "SELECT * FROM parteneri WHERE nr_intrebare = '$i' AND varianta_raspuns = '$intrebare_01'";
    $result = mysqli_query($con, $sql);

    $final_array = array();

    while ($row = mysqli_fetch_array($result))
    {
        $final_array[] = $row;
    }
}

編輯:

為了解決問題,我有一個包含10個<select>字段的調查表。 這是一個例子:

<select name="intrebare_01">
    <option selected="true" disabled="disabled">Selecteaza o optiune...</option>
    <option value="A">Fotbal</option>
    <option value="B">Tenis</option>
    <option value="C">Basket/Handbal/Hockey/Volei</option>
    <option value="D">Alte sporturi</option>
</select> 

如您所見,每個選項的值都在A到D之間。

我有一個名為“ parteneri”的表,其中包含每個問題的每個值的點。 如果您需要以問題4答案B的點為單位的值,則可以在那里找到它。

“合作伙伴”(合作伙伴)表具有以下結構:

在此處輸入圖片說明

如您所見,七個合作伙伴中每個合作伙伴的每個選項都有一個數值。

我需要做的是在處理完所有10個<select>之后添加這些合作伙伴各自收集的分數,並顯示獲得最高分數的前三個。

請問您是否有我未涉及的任何問題。

根據我的理解,您質疑要將每個$ final_array的值添加到另一個。 希望這對您有所幫助:)

<?php
    $i = 0;
    $array_sum=[];
     while ($i < 10){
      $i++;
       $sql =  "SELECT * FROM parteneri WHERE nr_intrebare = '$i' AND varianta_raspuns = '$intrebare_01'";
       $result = mysqli_query($con, $sql);

       $final_array = array();

      while ($row = mysqli_fetch_array($result))
      {
        $final_array = $row;
            $array_sum = array_map(function () {
                return array_sum(func_get_args());
            }, $array_sum, $final_array);
      }
     }
    ?>

這里有這個概念的例子

<?php 
$c=[];
$b = array(array(1, 20, 11, 8, 3),
           array(10, 2, 5, 10, 0),
           array(10, 2, 5, 10, 0),
           array(10, 2, 5, 10, 0),
           array(10, 2, 5, 10, 0));

                foreach($b as $key => $value){
                    $c = array_map(function () {
                        return array_sum(func_get_args());
                    }, $c, $value);

                }


print_r($c);
?>

以下示例數組的輸出([0] => 41 [1] => 28 [2] => 31 [3] => 48 [4] => 3)

嘗試使用以下代碼:

$i = 0;
$final_array = array();
while ($i < 10){
    $i++;
    $sql =  "SELECT * FROM parteneri WHERE nr_intrebare = '$i' AND varianta_raspuns = '$intrebare_01'";
    $result = mysqli_query($con, $sql);
    $j = 0;
    while ($row = mysqli_fetch_array($result))
    {
        $final_array[$i][$j] = $row;
        $j++;        
    }
}
<?php
$final_array = array();
$i = 0;
while ($i < 10){
    $i++;
    $sql =  "SELECT * FROM parteneri WHERE nr_intrebare = '$i' AND varianta_raspuns = '$intrebare_01'";
    $result = mysqli_query($con, $sql);

    $small_array = array();

    while ($row = mysqli_fetch_array($result))
    {
        $small_array[] = $row;
    }
      $final_array[] = $small_array;
}

像這樣的東西嗎?

如果您嘗試將查詢找到的行添加到$final_array$final_array在兩個循環之外初始化$final_array

您還可以通過在此處使用准備好的參數化查詢,准備一次並執行多次來提高運行時間和安全性,因此數據庫只需要編譯,優化和准備一次執行計划,而不是每次迭代一次。

<?php
    $sql =  "SELECT * 
            FROM parteneri 
            WHERE nr_intrebare = ? 
              AND varianta_raspuns = ?";

    $stmt = $con->prepare($sql);

    $final_array = array();
    $i = 0;

    while ($i < 10){
        $i++;
        $stmt->bind_param('is', $i, $intrebare_01);        
        $stmt->execute();

        while ($row = stmt->fetch_assoc()) {
            $final_array[] = $row;
        }
    }

    print_r($final_array);

並且,如果您確實不需要流程中的所有列,請將SELECT *替換為特定列的SELECT,這還將改善運行時和內存使用率

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM