在php中如何在一个数组中传递多个函数参数?

我想在一个数组中传递多个参数给一个函数。参数本身是一个字符串数组。

我有一个函数叫做 new_action(),我用下面的方式调用它。

new_action(array('actions' => array('ACTION1','ACTION2'), 'tables' => array('table1','table2')));

这个函数是这样的

public function new_action($params=array()) {
  $tables = array();
  $actions = array();

  if(count($params)) {
    foreach($params as $k => $v) {
      $tables  = ($k == 'tables')  ? $v : array();
      $actions = ($k == 'actions') ? $v : array();
    }

    // Do useful stuff with the variables here ...
    var_dump($tables);
    var_dump($actions);

    // ======== ACTUAL OUTPUT: ========
    // array(0) { }
    // array(0) { }

    // ======== EXPECTED OUTPUT: ========
    // array(2) { [0]=> string(6) "table1" [1]=> string(6) "table2" }
    // array(2) { [0]=> string(7) "ACTION1" [1]=> string(7) "ACTION2" }
  } 
}

正如你所看到的,这个函数的值 $v 循环内的字符串数组)从未被复制到变量 $tables$actions 循环之外。

我认为这很可能是一个范围问题,但看了其他类似问题的答案,我并没有阐明解决方案。

我如何重构代码,使我能够访问那些存储在 $v 对于每个 $k 外界 foreach 循环?

解决方案:

这些值是空的,因为有了foreach,你就会覆盖现有的值。

你甚至可以写得更简单,使用带括号的数组速记语法来提高可读性。

语句中的 凝聚运算符 是句法糖,以避免写 isset() 并且也是三元数组。如果设置了,则返回其内容,否则设置为空数组。

new_action(['actions' => ['ACTION1', 'ACTION2'], 'tables' => ['table1', 'table2']]);

function new_action($p = array()): void {
    $tables  = $p['tables']  ?? [];
    $actions = $p['actions'] ?? [];

    var_dump($tables);
    var_dump($actions);
}

array(2) { [0] => string(6) “table1” [1] => string(6) “table2” } array(2) { [0] => string(7) “ACTION1” [1] => string(7) “ACTION2” }。

给TA打赏
共{{data.count}}人
人已打赏
未分类

转换SQL脚本到Tableau计算表

2022-9-8 19:37:19

未分类

在集合视图中对不同类型的项目进行分组和显示 - Xamarin Forms

2022-9-8 19:37:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索