[英]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.