我是新来的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