recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment obtenir de la valeur en appelant à plusieurs reprises une fonction avec différents paramètres en php

C'est mon résultat, mais ce n'est pas mon attente

Name : YOUR_NAME
Lesson : Algorithm and Programming
Total duration : 3
Room : A17
Lecturer : Ikhsan Permadi
Day : Monday, Thursday
Building : South Block

Name : YOUR_NAME
Lesson : Data Structure 2
Total duration : 2
Room : B10
Lecturer : Faisal Sulhan
Day : Wednesday
Building : North Block

Name : YOUR_NAME
Lesson : Data Structure 2
Total duration : 2
Room : B10
Lecturer : Faisal Sulhan
Day : Wednesday
Building : North Block

Je ne parviens pas à créer des valeurs de tableau en classe, comment puis-je faire cela, c'est le résultat attendu

// Output
// ================================================

// Name: YOUR_NAME
// Lesson: Algorithm and Programming
// Total duration: 3 SKS
// Room: A17
// Lecturer: Ikhsan Permadi
// Day: Monday, Thursday
// Building: South Block


// Name: YOUR_NAME
// Lesson: Artificial Intelligence, Data Structure 2
// Total duration: 5 SKS
// Room: B12, B10
// Lecturer: Ikhsan Permadi, Faisal Sulhan
// Day: Thursday, Wednesday
// Building: North Block


// Name: YOUR_NAME
// Lesson: Algorithm and Programming, Advanced Database, Artificial Intelligence, Data Structure 2
// Total duration: 12 SKS
// Room: A17, B12, B10
// Lecturer: Ikhsan Permadi, Faisal Sulhan
// Day: Monday, Thursday, Tuesday, Wednesday
// Building: South Block, North Block
$student = new Student;
$student->takeLesson('Algorithm and Programming');

$student->getLessonSummary();

$student = new Student;
$student->takeLesson('Artificial Intelligence');
$student->takeLesson('Data Structure 2');

$student->getLessonSummary();

$student = new Student;
$student->takeLesson('Algorithm and Programming');
$student->takeLesson('Advanced Database');
$student->takeLesson('Artificial Intelligence');
$student->takeLesson('Data Structure 2');

$student->getLessonSummary();

class Lesson
{   
    public function getDetail($lessonName)
    {
        $details = [
            [
                'name' => 'Algorithm and Programming',
                'lecturer' => 'Ikhsan Permadi',
                'room' => 'A17',
                'schedule' => [
                    [
                        'day'=> 'Monday',
                        'duration'=> '2 SKS'
                    ],
                    [
                        'day'=> 'Thursday',
                        'duration'=> '1 SKS'
                    ]
                ]
            ],
            [
                'name' => 'Advanced Database',
                'lecturer' => 'Faisal Sulhan',
                'room' => 'B12',
                'schedule' => [
                    [
                        'day'=> 'Tuesday',
                        'duration'=> '2 SKS'
                    ],
                    [
                        'day'=> 'Thursday',
                        'duration'=> '2 SKS'
                    ]
                ]
            ],
            [
                'name' => 'Artificial Intelligence',
                'lecturer' => 'Ikhsan Permadi',
                'room' => 'B12',
                'schedule' => [
                    [
                        'day'=> 'Thursday',
                        'duration'=> '3 SKS'
                    ]
                ]
            ],
            [
                'name' => 'Data Structure 2',
                'lecturer' => 'Faisal Sulhan',
                'room' => 'B10',
                'schedule' => [
                    [
                        'day'=> 'Wednesday',
                        'duration'=> '2 SKS'
                    ]
                ]
            ],
        ];
        foreach ($details as $key => $detail) {
            if ($detail['name'] == $lessonName) {
                return $details[$key];
            }
        }
    }
}

class Room
{
    public function getBuilding($roomName)
    {
        $details = [
            'A17' => 'South Block',
            'B12' => 'North Block',
            'B10' => 'North Block'
        ];

        // sleep(2);

        return $details[$roomName];
    }
}

   
class Student
{
    public function takeLesson($lessonName)
    {   
        $lesson = new Lesson;
        $lesson = $lesson->getDetail($lessonName);

        
        $dataLesson = $lesson['name'];        
        
       
        $totalDuration = array();
        $days = array();
        foreach($lesson['schedule'] as $schedule){
            $totalDuration[] = $schedule['duration'];
            $days[] = $schedule['day'];
        }

        $day = implode(", ", $days);

        $totalDuration = array_sum($totalDuration);

        $building = new Room;
        $building = $building->getBuilding($lesson['room']);
       
        $this->data = [
            "Name" => "YOUR_NAME",
            "Lesson" => $dataLesson,
            "Total duration"=> $totalDuration,
            "Room" => $lesson['room'],
            "Lecturer" => $lesson['lecturer'],
            "Day" => $day,
            "Building" => $building           
            ];
        
    }

    public function getLessonSummary()
    {
        $data = $this->data;
        list() = multiple();

        foreach ($data as $key => $value) {
            if("array" == gettype($value)){
                $value= json_encode($value);
            }
            echo "$key : $value\n";
            echo '<br>';
        }      
        echo '<br>';
        

    }
}

P粉578680675P粉578680675290 Il y a quelques jours605

répondre à tous(1)je répondrai

  • P粉166675898

    P粉1666758982024-04-04 00:25:08

    Le problème vient de votre classe d'élève.

    Chaque fois que l'attribut takeLesson 时,您都会覆盖 data est appelé

    Cela peut donc être résolu en utilisant un tableau pour les stocker Comme ça

    class Student
    {
        private $data = [];
    
        public function takeLesson($lessonName)
        {   
            $lesson = new Lesson;
            $lesson = $lesson->getDetail($lessonName);
    
            
            $dataLesson = $lesson['name'];        
            
           
            $totalDuration = array();
            $days = array();
            foreach($lesson['schedule'] as $schedule){
                $totalDuration[] = $schedule['duration'];
                $days[] = $schedule['day'];
            }
    
            $day = implode(", ", $days);
    
            $totalDuration = array_sum($totalDuration);
    
            $building = new Room;
            $building = $building->getBuilding($lesson['room']);
           
            $this->data[] = [
                "Name" => "YOUR_NAME",
                "Lesson" => $dataLesson,
                "Total duration"=> $totalDuration,
                "Room" => $lesson['room'],
                "Lecturer" => $lesson['lecturer'],
                "Day" => $day,
                "Building" => $building           
                ];
            
        }
    
        public function getLessonSummary()
        {
            $dataArray = $this->data;
            list() = multiple();
    
            foreach($dataArray as $data) {
                foreach ($data as $key => $value) {
                    if("array" == gettype($value)){
                        $value= json_encode($value);
                    }
                    echo "$key : $value\n";
                    echo '
    '; } echo '
    '; } } }

    répondre
    0
  • Annulerrépondre