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
Characteristics.php
config.php
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
<?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-Code
<?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-Code
<?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"
}
}