2016-04-26 28 views
3

是否可以輕鬆地將數組的各個項目作爲參數傳遞給方法?PHP - 單個數組項目作爲方法的參數

像這樣:

EDIT2:

我改變了我的代碼,以顯示「解決方案」,該解決方案的問題是,它是因爲PHP 4.1過時,在PHP 7

刪除
<?php 
    $builder = new Builder; 
    $params = array('This is number: ', 4); 

    echo call_user_method_array('add', $builder, $params); 

    class Builder { 
     public function add($string1, $number1) { 
      return $string1 . $number1; 
     } 
    } 
?> 

編輯:

我犯了一個錯誤,使用一個簡單的例子。我想知道這是否可能的原因不是返回一個字符串的函數。它是創建一個類似MVC的框架。解決方案必須全面。

+0

通陣列和'implod'它,或保存數組元素中的一些變量和傳遞給函數 –

+2

試試這樣:'public function add($ params){ return implode('',$ params); }' – Thamilan

回答

2

如果你想堅持你的將軍溶液,只需要使用適當的非棄用方法:

echo call_user_func_array([$builder, 'add'], $params); 

參考:callable

演示:https://3v4l.org/4VFi6

2

使用implode()方法。

<?php 
    $builder = new Builder; 
    $params = array('This is number: ', 4); 

    echo $builder->add($params); //returns 'This is number: 4' 

    class Builder { 
     public function add($params) { 
      return implode('', $params); 
     } 
    } 
?> 

輸出

This is number: 4 

檢查在線演示:Click Here

OR

傳遞2個參數$params[0],$params[1]

<?php 
    $builder = new Builder; 
    $params = array('This is number: ', 4); 

    echo $builder->add($params[0],$params[1]); //returns 'This is number: 4' 

    class Builder { 
     public function add($string1 ,$number1) { 

      return $string1 . $number1; 
     } 
    } 
?> 

在線演示:Click Here

+0

它應該是'return implode('',$ params);'因爲OP在數組值本身中增加空格 – Thamilan

+0

正確,編輯。謝謝。 :) @Thamizhan – RJParikh

+1

我編輯我的帖子,我的示例代碼不是我對這個問題的唯一用例。因此,解決方案需要全面。 – kgongonowdoe

0

這裏是一個更通用的方法:

只是通過它通過使用foreach-loop

<?php 
    $builder = new Builder; 
    $params = array('This is number: ', 4); 

    $builder->add($params); //returns 'This is number: 4' 

    class Builder { 
     public function add($array) { 
      foreach($array as $key => $value){ 
       //Do something with your values here if you want 
       return $key . $value; 
      } 
     } 
    } 
?> 
數組傳遞給函數和 迭代