PHP 对 MySQL 中的数组计数不正确

标签 php mysql arrays count

我无法正确计算从数据库中提取的数组中的元素。请参阅下面我的代码:

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) 
{
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully!"; 

//NEW QUERY TO OUR DATABASE
$query = $conn -> query("Select distinct Race from Races");
while($race[] = $query->fetch_object());

//Check how many elements are within our query
$racecount = count($race);
echo "<br>" . $racecount . "<br><br>";
$racecount = count($race,COUNT_RECURSIVE);
echo "<br>" . $racecount . "<br><br>";

var_dump($race);

echo "<br><br><br>";

以两种方式使用两种类型 count() 都会产生相同的结果“4”。不过,请查看我的 var_dump 的结果。

array(4) { [0]=> object(stdClass)#3 (1) { ["Race"]=> string(5) "Human" } [1]=> object(stdClass)#4 (1) { ["Race"]=> string(7) "Vampire" } [2]=> object(stdClass)#5 (1) { ["Race"]=> string(5) "Demon" } [3]=> NULL } 

Var_dump 显示它是一个包含 4 个元素的数组。所以计数是正确的,它只是没有给我我正在寻找的数字。

因此,我有三个问题。

1) 如何正确计算我的元素?

2) 有人可以向我解释一下为什么它读作 4 个元素吗?

3) 我的数组不是多维的吗? (因为两个计数产生相同的结果 4)

预先致以最诚挚的问候和感谢,

乔什

最佳答案

`while($race[] = $query->fetch_object());`

$query->fetch_object() 返回 null 表示数据集中不再有条目,但您仍分配该 null 值作为最后一个条目添加到您的 $race 数组中,然后才允许 while 终止其循环....这就是为什么您有 4 个条目数组而不是 3。

您的数组不是多维的,因为存储在$races数组中的实体是对象,而不是数组;如果它是数组的数组,它只会是多维的

关于PHP 对 MySQL 中的数组计数不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39424824/

相关文章:

php - 在 PHP 和 javascript 中使用 time() 和 setTime() 函数

mysql - 用另一个表的另一列的数据更新一列

函数中无法识别字符数组

php - 图像旋转中的背景透明度()

php - Foreach 行为怪异

php mysql - 搜索字段和类别(如果不为空)

php - MySQL mysqli - 返回数组中的行

c++ - 创建指向 unsigned char[] 的指针并将其传递给 sf::SoundBuffer::loadFromMemory

php - 如何在 Laravel 5.1 中使用 NOT FIND_IN_SET?

java - 如何设置 doInbackground 在继续 mainActivity 之前完成其任务?