函數賦參數問題

來源:互聯網
上載者:User
如:
php內建的sprintf()函數
例:
sprintf($xml,$a,$b);
我現在還想往後插入參數$c,$d
但是$c,$d是從數組中取出來的資料。
$array=array(
array('c的內容'),
array('d的內容'),
)
如果我迴圈出$array,再放入參數是不可行的,有什麼好的方法嗎?
$str='';
foreach($array as $key=>$val){
$str.=$val[0].',';
}
sprintf($xml,$a,$b,$str);


回複討論(解決方案)

你的做法有些問題
對於 sprintf($xml,$a,$b);
$mxl 中至多有 2 個 %s(或其他格式符),否則將產生語法錯誤
當寫作 sprintf($xml,$a,$b,$c,$d); 時
$mxl 中就需要 4 個格式符了
因此,你只是考慮如何傳值是不行的

我知道sprintf()的格式要求。
我只是把這個函數拿出來做例子。
當函數遇到傳遞多個參數時,可否有一種方法,從數組中取值出來,傳遞給函數,傳遞的時候是多個參數,不是一個。

call_user_func_array

徐老大,還沒有明白我的意思。
我的意思是:
有一個方法:
function test(){
}
test($a,$b);//後面可能還會有更多的參數,但這都是動態可能有5個,也有可能會有6個,不一定。

所以我想通過數組,來遍曆來源數組的:
$array=array(1,2,3,4,5);//我現在需要把數組中的值,傳到test()後面去,這是5個,但有可能是6個,7個.
如:test($a,$b,1,2,3,4,5);
所以我想試否能通過遍曆數組來傳遞給函數呢?
$args='';
foreach($array as $key=>$val){
$args.=$val.',';
}
substr($args,0,-1);
test($a,$b,$args);
但是很抱歉這種想法是錯誤的,因為傳遞的時候,這裡傳的是一個參數,所以在中間需要做什麼處理呢?

call_user_func_array
這個方法限制太死了。

我不知道你想做什麼,至少你舉得例子是有問題的!
你可否舉個恰當的例子?

我不知道你想做什麼,至少你舉得例子是有問題的!
你可否舉個恰當的例子?
有一個方法:
test($a,$b);//但是我想在後面再增加參數,可能是多個。
但目前,我使用
$args="a,b,c";
test($a,$b,$args);//這樣是不可行的,因為此時只有3個參數。
我想要的結果是:
test($a,$b,a,b,c);//這樣才是正常的,有5個參數,也是我想要的。

function test($a, $b) {  echo '傳入: ' . join(',', func_get_args());}test(1,2); //傳入: 1,2test(1,2,3,4,5);//傳入: 1,2,3,4,5$ar = array('a','b','c','d','e','f');call_user_func_array('test', $ar);//傳入: a,b,c,d,e,f


您依然是沒有準確的描述你的意思
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.