我是新來的PHP和MySQL。我有一個表user_entries
和兩列max_val
和num
的數據庫。PHP,mysqli數組
我已經使用下面的代碼將我的兩列提取到數組中,然後使用下面的函數numberTimesOver
來確定$num[$i] > $limit
多少次$val[$i] = 10
。數字範圍從0到10.
當我使用我的函數與我的表中的兩個數組時,我得到的輸出爲零,當它應該是4.當我使用我的$a
和$b
數組時,我得到2.
我哪裏錯了?當我嘗試將我的表列轉換爲數組時,我想我會出錯。
<?php
require_once('functions.php');
$mysqli = new mysqli('localhost', 'root', NULL, 'practice');
$val_sql = "SELECT `max_val` FROM `user_entries`";
$valData = $mysqli->query($val_sql);
$num_sql = "SELECT `num` FROM `user_entries`";
$numData = $mysqli->query($num_sql);
$val = array();
while($row = $valData->fetch_assoc())
{
$val[]= $row;
}
$num = array();
while ($row = $numData->fetch_assoc())
{
$num[] = $row;
}
//$a = [10, 4, 5, 8, 3];
//$b = [10, 6, 10, 10, 2];
function numberTimesOver($number, $max, $limit) {
$sum = 0;
for ($i = 0; $i < count($max); $i++)
{
if ($max[$i] == 10 && $number[$i] > $limit)
{
$sum += 1;
}
}
print($sum);
}
numberTimesOver($val, $num, 6)
您的代碼將返回像這樣的數組''[「num」=> 10],[「num」=> 6],[「num」=> 10],...]'。顯然,您的'numberTimesOver'函數未設置爲處理此格式,因爲它預計每個數組項都是標量(整數)值。另外,爲什麼兩個查詢?沒有'ORDER BY'子句,不能保證'$ val'和'$ num'的索引條目將屬於同一個元組 – Phil
好吧,我現在明白fetch_assoc不會以整數形式返回數組爲什麼它不工作。我使用了兩個查詢,所以我可以分別提取兩個列。我看到了ORDER BY,並不太清楚如何去做,所以我認爲這可能會起作用。我將如何將數組轉換爲整數數組? – user3788874