首页 > 解决方案 > 如何在 PHP 的 foreach 循环中创建动态函数?

问题描述

我正在尝试遍历arrayusingforeach循环,并为每个元素创建一个单独的函数。

$items = ['one', 'two', 'three'];

foreach( $items as $item ){
    function $item."_output"(){
        echo $item.' success';
    }
}

我的期望是为每个数组元素创建函数,例如 :function one_output(){}、、function two_output(){}function three_output(){}

标签: phparraysfunctionloopsforeach

解决方案


您不能直接创建函数。但是您可以创建闭包(匿名函数)并将它们放入数组中:

<?php
  $items = ['one', 'two', 'three'];

  $myfuncs = array();

  foreach( $items as $item ) {
      // create a function which uses current value of $item
      $myfuncs[$item] = function() use ($item) { 
         echo  $item.' success';
      };
  }

  $myfuncs['one'](); // one success

  $myfuncs['two'](); // two success

推荐阅读