DataInputStream br=new DataInputStream(System.in);
System.out.println("input a number");
int n=Integer.parseInt(br.readLine(System.in));
Вы можете обернуть массив в анонимный класс . Одноразовое использование, как это, является основной причиной их существования.
$result = new class {
private $data = array
(
array("name"=>"Toby", "q1"=>"1"),
array("name"=>"Phelps", "q1"=>"1"),
array("name"=>"Davies", "q1"=>"1"),
array("name"=>"Keith", "q1"=>"1"),
);
private $data_index = 0;
public $num_rows;
public function __construct() {
$this->num_rows = count($this->data);
}
public function fetch_assoc() {
if (isset($this->data[$this->data_index])) {
$index = $this->data_index++;
return $this->data[$index];
}
}
};
Как и в предыдущем ответе, я предлагаю класс. Здесь я на самом деле назову класс и передам данные конструктору. Итерация по массиву может быть выполнена с помощью методов current
и next
:
class ResultSet {
private $array = [];
public $num_rows = 0;
public function __construct($data) {
$this->array = $data;
$this->num_rows = count($this->array);
}
public function fetch_assoc() {
$val = current($this->array);
next($this->array);
return $val;
}
}
До тех пор, пока она не будет исправлена. Вы бы поиграли с данными в следующем:
$result = new ResultSet([
["name"=>"Toby", "q1"=>"1"],
["name"=>"Phelps", "q1"=>"1"],
["name"=>"Davies", "q1"=>"1"],
["name"=>"Keith", "q1"=>"1"],
]);
Я не реализовал поддержку count($result)
, так как не думаю, что она поддерживается и в реальных наборах результатов mysqli. Вы получаете счет через ->num_rows
(как и вы).