2009-09-23 73 views
-1

它應該是這樣的:如何在PHP中實現這樣的呼叫中心功能?

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

} 

其中$ FUNC是函數被調用,

$值是$ FUNC參數,

和$位置代表的指數$值,

例如,

callcenter('func',1,2)實際上應該叫FUNC(NULL,1)

callcenter('func',1,3)實際上應該調用func(null,null,1)。說,留下其他職位爲空。

+0

這聽起來像一個重構可能是爲了。你想達到什麼目的? – derobert 2009-09-23 05:40:36

+0

進行動態調用。 – omg 2009-09-23 05:56:04

回答

2

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); 
?> 
+0

正如我所想的那樣,有一種比我的switch語句更好的方法。我將提交這個供將來參考。 +1 – Tom 2009-09-23 05:30:08

0

在PHP是更多鈔票,以呼叫姓名被存儲在一個varable的函數,因此

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; 
    } 
} 

有可能是一個更好的辦法來處理可變數量的參數,但應該得到的基本思路跨越。

+0

如果$ position是100000,該怎麼辦?開關將會非常長,哈哈〜 – omg 2009-09-23 05:25:25

+0

是的,看我對馬修的評論 – Tom 2009-09-23 05:31:27