foreach($arr as $el){
    $what= $el->what;
    if($what == 'img'){get_img();}
    elseif($what == 'video'){get_video();
    elseif($what == 'something'){get_something();} 
}

Wie man das oben in Kürze so sagt:

 get_$what();
1
qadenza 7 Feb. 2020 im 22:35

4 Antworten

Beste Antwort

Wie in https://www.php.net/manual/en/ functions.variable-functions.php

$func = 'foo';
$func();        // This calls foo()

Also in deinem Fall:

foreach($arr as $el){
    $what= $el->what;
    $funcname = 'get_'.$what;
    $funcname();
}
2
janmyszkier 7 Feb. 2020 im 19:37

Sie können den Funktionsnamen in einer Variablen speichern und diese Funktion dann dynamisch aufrufen, indem Sie der Variablen () hinzufügen. (nicht sicher, ob ich das richtig gesagt habe)

$yourFunction = 'get_';
$yourFunction .= 'img';

$value = $yourFunction();
// will execute get_img();

Hier ist eine Geige zum Spielen

1
Nicolas 7 Feb. 2020 im 19:38

Sie können Klammern verwenden

<?php

function ab(){echo 'ho';}
$foo='video';
('get_'.$foo)();
2
Dharman 7 Feb. 2020 im 19:55
 function get_id(){
        echo "id";
       }
    function get_d(){
        echo "d";
        }

      $id='id';
      $fun='get_'.$id;
      $fun();

Ausgänge: id

3
Liam Yang 7 Feb. 2020 im 19:50