javascript function - Comment exécuter immédiatement une fonction anonyme en PHP?




variable appeler (8)

Non exécuté immédiatement, mais proche de;)

<?php

$var = (function(){ echo 'do something'; });
$var();

?>

En JavaScript, vous pouvez définir des fonctions anonymes qui sont exécutées immédiatement:

(function () { /* do something */ })()

Pouvez-vous faire quelque chose comme ça en PHP?


Bien sûr, vous pouvez utiliser call_user_func , mais il existe encore une autre alternative assez simple:

<?php
// we simply need to write a simple function called run:
function run($f){
    $f();
}

// and then we can use it like this:
run(function(){
    echo "do something";
});

?>

C'est le plus simple pour PHP 7.0 ou plus tard.

php -r '(function() {echo 'Hi';})();'

Cela signifie créer une fermeture, puis l'appeler comme fonction en suivant "()". Fonctionne comme JS grâce à un ordre d'évaluation variable uniforme.

https://3v4l.org/06EL3


Je l'ai essayé de cette façon, mais c'est plus bavard que la première réponse en utilisant n'importe quel opérateur (ou fonction) qui vous permet de définir la fonction en premier:

    $value = $hack == ($hack = function(){
            // just a hack way of executing an anonymous function
            return array(0, 1, 2, 3);                
    }) ? $hack() : $hack();

Remarque, la réponse acceptée est correcte, mais elle prend 1,41 fois plus longtemps (41% plus lentement) que la déclaration d'une fonction et l'appel en deux lignes.

[Je sais que ce n'est pas vraiment une nouvelle réponse, mais j'ai trouvé qu'il était utile d'ajouter ceci quelque part pour les visiteurs.]

Détails:

<?php
# Tags: benchmark, call_user_func, anonymous function 
require_once("Benchmark.php");
bench(array(
        'test1_anonfunc_call' => function(){
                $f = function(){
                        $x = 123;
                };
                $f();
        },
        'test2_anonfunc_call_user_func' => function(){
                call_user_func(
                        function(){
                                $x = 123;
                        }
                );
        }
), 10000);
?>

Résultats:

$ php test8.php
test1_anonfunc_call took 0.0081379413604736s (1228812.0001172/s)
test2_anonfunc_call_user_func took 0.011472940444946s (871616.13432805/s)

Pour PHP7: voir la réponse de Yasuo Ohgaki : (function() {echo 'Hi';})();

Pour les versions précédentes: la seule façon de les exécuter immédiatement je peux penser à

call_user_func(function() { echo 'executed'; });

(new ReflectionFunction(function() {
 // body function
}))->invoke();

Vous avez 1 à 9 tableau et vous voulez supprimer 5 utiliser le code ci-dessous.

var numberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];

var newNumberArray = numberArray.filter(m => {
  return m !== 5;
});

console.log("new Array, 5 removed", newNumberArray);

Si vous voulez multiplier la valeur ex: - 1,7,8

var numberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];

var newNumberArray = numberArray.filter(m => {
  return (m !== 1) && (m !== 7) && (m !== 8);
});

console.log("new Array, 5 removed", newNumberArray);

Si vous souhaitez supprimer une valeur de tableau dans un tableau, par exemple: - [3,4,5]

var numberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var removebleArray = [3,4,5];

var newNumberArray = numberArray.filter(m => {
    return !removebleArray.includes(m);
});

console.log("new Array, [3,4,5] removed", newNumberArray);

comprend le navigateur pris en charge est un link





php javascript function