PHP,使用 class 寻址对象
PHP, addressing objects using class
我正在尝试使用 class 将 json 数据库中的所有名称列出到 html。 html 输出应如下所示:-
Characters
- name: John
- name: Sarah
- name: Michael
我的代码已经做到了这一点。我知道这段代码还没有完成或者有错误,但我仍然是一个初学者,正在学习。你能帮我让这段代码工作吗?
Json 数据库文件
databas.json
{
"results": [
{
"name": "John",
"height": "182 cm",
"mass": "80 kg",
},
{
"name": "Sarah",
"height": "165 kg",
"mass": "60 cm",
},
{
"name": "Michael",
"height": "178 cm",
"mass": "75 kg",
},
]
}
索引文件
index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Character</title>
</head>
<body style="margin-bottom:20em;">
<h1>Characters</h1>
<?php include('characters.php'); ?>
<?php
$data = file_get_contents("databas.json");
$data = json_decode($data, true);
echo '<pre>';
print_r($data);
echo '</pre>';
?>
</body>
</html>
Class代码
characters.php
<?php
class Character {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function getName($name){
return $this->name;
}
}
?>
The $data content are
Array
(
[results] => Array
(
[0] => Array
(
[name] => John
[height] => 182 cm
[mass] => 80 kg
)
[1] => Array
(
[name] => Sarah
[height] => 165 kg
[mass] => 60 cm
)
[2] => Array
(
[name] => Michael
[height] => 178 cm
[mass] => 75 kg
)
)
)
我不确定我是否理解你的意思,但你可以做简单的 foreach
循环:
$data = file_get_contents("databas.json");
$data = json_decode($data, true);
foreach($data["result"] as $e) {
echo "Name: " . $e["name"];
}
注意在 json_decode
return 关联数组中发送 true
这样你就可以使用 [key]
访问名称键所以不需要在 include('characters.php');
编辑: 如果你想使用 class:
foreach($data["result"] as $e) {
$character = new Character($e["name"]);
$characters[] = $character;
}
foreach($characters as $character) {
echo "Name: " . $character->getName();
}
我正在尝试使用 class 将 json 数据库中的所有名称列出到 html。 html 输出应如下所示:-
Characters
- name: John
- name: Sarah
- name: Michael
我的代码已经做到了这一点。我知道这段代码还没有完成或者有错误,但我仍然是一个初学者,正在学习。你能帮我让这段代码工作吗?
Json 数据库文件
databas.json
{
"results": [
{
"name": "John",
"height": "182 cm",
"mass": "80 kg",
},
{
"name": "Sarah",
"height": "165 kg",
"mass": "60 cm",
},
{
"name": "Michael",
"height": "178 cm",
"mass": "75 kg",
},
]
}
索引文件
index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Character</title>
</head>
<body style="margin-bottom:20em;">
<h1>Characters</h1>
<?php include('characters.php'); ?>
<?php
$data = file_get_contents("databas.json");
$data = json_decode($data, true);
echo '<pre>';
print_r($data);
echo '</pre>';
?>
</body>
</html>
Class代码
characters.php
<?php
class Character {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function getName($name){
return $this->name;
}
}
?>
The $data content are
Array
(
[results] => Array
(
[0] => Array
(
[name] => John
[height] => 182 cm
[mass] => 80 kg
)
[1] => Array
(
[name] => Sarah
[height] => 165 kg
[mass] => 60 cm
)
[2] => Array
(
[name] => Michael
[height] => 178 cm
[mass] => 75 kg
)
)
)
我不确定我是否理解你的意思,但你可以做简单的 foreach
循环:
$data = file_get_contents("databas.json");
$data = json_decode($data, true);
foreach($data["result"] as $e) {
echo "Name: " . $e["name"];
}
注意在 json_decode
return 关联数组中发送 true
这样你就可以使用 [key]
访问名称键所以不需要在 include('characters.php');
编辑: 如果你想使用 class:
foreach($data["result"] as $e) {
$character = new Character($e["name"]);
$characters[] = $character;
}
foreach($characters as $character) {
echo "Name: " . $character->getName();
}