Прежде чем задать свой вопрос, я опубликую код: (Обратите внимание, что если вы можете просто объяснить второй вопрос, этого будет достаточно, я просто очень запутался, что происходит в цикле foreach.
<?php
class dbh {
private $servername; private $username; private $password; private $
dbname;
protected function connect() {
$this->servername = "localhost";
$this->username = "root";
$this->password = "";
$this->dbname = "whatever";
$conn = new mysqli($this->servername, $this->username, $this->password,
$this->dbname);
return $conn;
}
}
<?php
class User extends Dbh {
protected function getAllUsers() {
$sql = "SELECT * FROM user";
$result = $this->connect()->query($sql);
$numRows = $result->num_rows;
if($numRows > 0) {
while($row = $result ->fetch_assoc()) {
$data[] = $row;
}
return $data;
}
}
}
<?php
class ViewUser extends User {
public function showAllUsers() {
$datas = $this->getAllUsers();
foreach ($datas as $data) {
echo $data['uid'] . "<br>";
echo $data['pwd'] . "<br>";
}
}
}
<?php
includes all those classes
?>
<body>
<?php
$users = new ViewUser();
$users->showAllUsers();
?>
</body>
Я не понимаю пару вещей об этом коде.
Во-первых, что такое "это" в этих классах? Это просто заполнитель для объекта users, которыйтекущий объект, верно? Я думаю, что это так.
Во-вторых, и мой главный вопрос, когда мы вызываем функцию-член showAllUsers (), мы переходим к классу ViewUser, а затемиметь переменную $ datas, которая присваивается $ this-> getAllUsers (), которая в итоге возвращает массив $ data, который содержит все строки в базе данных ... Верно?
Тогда у меня вопрос: каково содержание $ datas в цикле foreach? Это массив строк? Предполагается, что $ data - это ключевые значения, но $ data - это тоже массив, который меня очень смущает.
Я визуализирую это как $ datas =$ data, поэтому $ datas [] = [$ data [0], $ data [1], $ data [2], $ data [3], ... $ data [last_one]], и каждый из этих элементов содержитстрока ... Итак, foreach ($ datas как данные) проходит через каждый элемент, но для его отображения нам нужно отобразить данные [0]?
Верно ли мое понимание?Я знаю, что это ассоциативный массив, поэтому эти 0, 1, 2 ... и т. Д. Являются заголовками столбцов таблицы ..
Кроме того, что именно делает $ fetch_assoc, когда у нас есть $ row = fetch_assoc?Мы просто храним строки в переменной $ row?Цикл while ложен, когда мы достигаем последнего ряда, верно?Я просто привык видеть условие в цикле while, как, например, while (x == 4).Я никогда не видел ситуации, когда мы назначаем переменную, как, например, while (x = 4), до сих пор.