PHP :: Aufgabe #266
1 Lösung

Steckbrief-Informationen
Anfänger - PHP
von DragStar
- 06.04.2020 um 08:37 Uhr
Baue ein passendes Array, welches du mit Steckbriefinfos füllst (z.B. Name, Alter, Hobbies usw).
Danach lass den User ein Hobby eingeben und gib dann den Namen der Personen ein, die dieses Hobby haben.
Danach lass den User ein Hobby eingeben und gib dann den Namen der Personen ein, die dieses Hobby haben.
Lösungen:
Leichte Abwandlung zur Aufgabe:
Anstelle der Namen der Personen werden in den Resultaten ihre ID bzw. ihr Index in der Konfiguration ausgegeben.
Damit ist es eindeutig welche Person gemeint ist, da z.B. der Name "John" mehrfach vorkommt.
main.php
PHP-Code
Characteristics.php
PHP-Code
config.php
PHP-Code
Anstelle der Namen der Personen werden in den Resultaten ihre ID bzw. ihr Index in der Konfiguration ausgegeben.
Damit ist es eindeutig welche Person gemeint ist, da z.B. der Name "John" mehrfach vorkommt.
main.php

<?php require_once 'Characteristics.php'; $mapping = include 'config.php'; $characteristics = new Characteristics($mapping); var_dump($characteristics->getInformation('hobbies', 'hobby 1')); var_dump($characteristics->getInformation('hobbies', 'hobby 2')); var_dump($characteristics->getInformation('hobbies', 'hobby 3')); var_dump($characteristics->getInformation('name', 'john'));
Characteristics.php

<?php class Characteristics { private $mapping = []; public function __construct(array $mapping) { $this->mapping = $mapping; } public function getInformation(string $key, string $needle): array { $results = array_column($this->mapping, $key); $val = []; foreach ($results as $index => $result) { if (is_array($result)) { if (($position = array_search($needle, $result)) !== false) { $val[$key][$index] = $result[$position]; } } elseif ($needle === $result) { $val[$key][$index] = $result; } } return $val; } }
config.php

<?php return [ [ 'name' => 'john', 'familyname' => 'doe', 'hobbies' => [ 'hobby 1', 'hobby 2', 'hobby 3' ], 'dateofbirth' => '1970-01-01' ], [ 'name' => 'test', 'familyname' => 'dummy', 'hobbies' => [ 'hobby 1', 'hobby 2' ], 'dateofbirth' => '1970-01-02' ], [ 'name' => 'john', 'familyname' => 'doe', 'hobbies' => [ 'hobby 3', 'hobby 4' ], 'dateofbirth' => '1970-01-03' ], [ 'name' => 'bli-bla', 'familyname' => 'blubb', 'hobbies' => [ 'hobby 3' ], 'dateofbirth' => '1970-01-03' ], [ 'name' => 'person', 'familyname' => 'withouthobbies', 'hobbies' => [ ], 'dateofbirth' => '1970-01-04' ], [ 'name' => 'person', 'familyname' => 'withouthobbies-two', 'dateofbirth' => '1970-01-04' ], ];
Konsolenausgabe:
array(1) {
["hobbies"]=>
array(2) {
[0]=>
string(7) "hobby 1"
[1]=>
string(7) "hobby 1"
}
}
array(1) {
["hobbies"]=>
array(2) {
[0]=>
string(7) "hobby 2"
[1]=>
string(7) "hobby 2"
}
}
array(1) {
["hobbies"]=>
array(3) {
[0]=>
string(7) "hobby 3"
[2]=>
string(7) "hobby 3"
[3]=>
string(7) "hobby 3"
}
}
array(1) {
["name"]=>
array(2) {
[0]=>
string(4) "john"
[2]=>
string(4) "john"
}
}