PHP, адресация объектов с помощью класса

#php #json #class #object #instantiation

#php #json #класс #объект #создание экземпляра

Вопрос:

Я пытаюсь перечислить все имена из базы данных json в html, используя класс. вывод html должен выглядеть примерно так:-

Персонажи

  • имя: Джон
  • имя: Сара
  • имя: Майкл

Мне удалось зайти так далеко с моим кодом. Я знаю, что этот код не закончен или в нем есть ошибки, но я все еще новичок и учусь. Не могли бы вы, пожалуйста, помочь мне заставить этот код работать?

Файл базы данных 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>
  

Код класса

characters.php

 <?php

class Character {

        private $name;

public function __construct($name) {
            $this->name = $name;

        }
public function getName($name){
        return $this->name;
        }

}
 ?>
  

Содержимое $data является

 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
                )

        )

)
  

Комментарии:

1. Можете ли вы поделиться содержимым $data ? (использовать var_dump($data) )

2. Я просто добавил это к вопросу.

Ответ №1:

Я не уверен, правильно ли я вас понял, но вы можете выполнить простой foreach цикл:

 $data = file_get_contents("databas.json");
$data = json_decode($data, true);

foreach($data["result"] as $e) {
    echo "Name: " . $e["name"];
}
  

Обратите внимание, что отправка true в json_decode возвращает ассоциативный массив, чтобы вы могли получить доступ к ключу name с [key] , поэтому нет необходимости в include('characters.php');

Редактировать: Если вы хотите использовать класс:

 foreach($data["result"] as $e) {
    $character = new Character($e["name"]);
    $characters[] = $character;
}

foreach($characters as $character) {
    echo "Name: " . $character->getName();
}    
  

Комментарии:

1. Я знаю, что это возможно, но я пытаюсь использовать class для этого.

2. @DhulfiqarH.Al-Hussan тогда вам нужно загрузить свой массив в класс до — обновил мой ответ

3. можете ли вы подсказать, как это сделать?

4. Должен ли я записать это внутри файла класса?

5. Нашел это! … Готово!