【问题标题】:How to implement such a callcenter function in PHP?如何在 PHP 中实现这样的呼叫中心功能?
【发布时间】:2009-09-23 05:14:45
【问题描述】:

应该是这样的:

function callcenter($func,$value,$position)
{

}

其中$func是要调用的函数,

$value 是 $func 的参数,

而$position代表$value的索引,

例如,

callcenter('func',1,2) 实际上应该调用 func(null,1)

callcenter('func',1,3) 实际上应该调用 func(null,null,1)。

说,其他位置为空。

【问题讨论】:

  • 听起来可能需要重构。你想完成什么?

标签: php call


【解决方案1】:

您关注call_user_func_arrayarray_fill

<?php
function callcenter($func, $value, $position)
{
    $args = array_fill(0, $position-1, null);
    $args[] = $value;

    call_user_func_array($func, $args);
}

function example()
{
    $args = func_get_args();

    var_dump($args);
}

callcenter('example',1,2);

callcenter('example',1,3);
?>

【讨论】:

  • 正如我所想,有比我的 switch 语句更好的方法。我会把这个归档以供将来参考。 +1
【解决方案2】:

在 php 中可以调用名称存储在变量中的函数,所以

function callcenter($func,$value,$position)
{
 switch ($position)
  {
   case 1: $func($value); break;
   case 2: $func(null, $value); break;
   case 3: $func(null, null, $value); break;
  }
}

可能有更好的方法来处理可变数量的参数,但这应该可以理解基本思想。

【讨论】:

  • 如果$position是100000呢?开关会很长,lol~
  • 是的,看看我对马修的评论
猜你喜欢
  • 1970-01-01
  • 2011-01-09
  • 2012-06-24
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多