• 締切済み

配列の中身を順番に可変長定義関数に渡すには

好きなだけ引数が渡せる関数があり、その引数に任意の配列の中身をeval関数を使わずに一つずつ渡したいのですが、どうすればいいのでしょうか。eval関数を使った場合は以下のような感じです。 $list=array("apple","banana","orange"); function hoge(){ print_r(func_get_args()); } $arg=implode ('","',$list); eval('hoge("'.$arg.'");');//hoge("apple","banana","orange"); よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

>> 配列の中身をeval関数を使わずに一つずつ渡したいのですが、 >> どうすればいいのでしょうか。 質問の意図を理解している自信が有りませんが、以下ではダメですか foreach($list as $val){ hoge($val); }

関連するQ&A

  • 配列の中身を全て順番に別の関数へ引数として渡すには

    配列の中身を全て順番に別の関数へ引数として渡すには、どうすればよいでしょうか? このままだと、'null' は Null またはオブジェクトではありません。 となります。 function piyo(hoge){ alert(hoge); } for (var i = 0; i < hogearray.length; i ++) { piyo(hogearray[i]);//ここを通ったら、順番の関数を呼び出すようにしたい } また、グローバル変数として渡すには、どうすればよいでしょうか?

  • オブジェクトの中で呼び出される順番とデフォ引数?

    ・意味が分からないコードがあるので教えてください ■コード var arg; var obj = {  hoge : function( arg ) {   var hoge = function(arg){    return function() {    }   }(arg);   hoge();  } } ■質問 ・この時、obj.hoge(arg);と書いたら、どういう処理が走るのでしょうか? ・初めに実行されるのは? 無名関数部分? それともhoge()? ・hoge()を実行する際、引数指定していないので、引数は渡らない?

  • 配列に新しい値を加える

    配列に新しい値を加えようとしているのですが、どうもうまくいってくれません。array_push を使用してもうまくいかないのでどうしたものかと悩んでいます。 $fruits = "banana melon orange strawberry"; $fruits = explode (' ', $fruits); $fruits = array_push ($fruits, "apple"); print_r($fruits); とすると 5 が表示されます。一方3行目を消すと Array ( [0] => banana [1] => melon [2] => orange [3] => strawberry ) が表示されます。 配列に新しい値を加えるやり方をご存知の方おられましたらご教授くださるとうれしく思います。

    • ベストアンサー
    • PHP
  • 可変長引数関数のマクロ関数について

    可変長引数をとる関数をマクロで置き換えたいのですが、 この方法だとできません。うまく実現できないでしょうか? ------------------------------------------------------- #define TRACE(arg, ...) trace(__FILE__,__LINE__,arg, ...) void trace(char *file, int line, char *arg, ...) {   ...(略)... } func() {   ...   TRACE("hello %s", "taro");   ... } ------------------------------------------------------- よくあるトレース処理だと思いますがこんな感じです。 他にも代替手段は考えつきますが、 可変長引数の関数のマクロが可能かが知りたいです。 どなたがご存知の方がいらっしゃいましたら、よろしくお願いします。

  • 多次元配列を、1次元の配列にする関数を書いてください。

    以下のように、多次元配列の配列をペチャンコにする関数(array_flatten)ってどうかきますか? <?php $arr[0] = 'a'; $arr[1][0] = 'b'; $arr[1][1][0] = 'c'; $arr[1][1][1][0] = 'd'; $arr[1][1][1][1][0] = 'e'; $arr[1][1][1][2] = 'f'; $arr[1][1][2] = 'g'; $arr[1][2] = 'h'; $arr[2] = 'i'; function array_flatten($arg){   処理; } $new_arr = array_flatten($arr); print_r($new_arr); ?> ↓ Array (   [0] => a   [1] => b   [2] => c   [3] => d   [4] => e   [5] => f   [6] => g   [7] => h   [8] => i ) ※関数のなかで、ペチャンコの配列を格納するための新しい配列を宣言すると、 同関数を再帰的に呼び出したら、その配列が初期化されますよね?

    • ベストアンサー
    • PHP
  • 関数の引数に配列を初期化なしで。

    関数の引数に配列を初期化して渡しているプログラムを目にします。 関数の引数に配列を初期化なしで渡す場合とどう違うのでしょうか? 例 <?php echo tesutoFunc(array('reservation' => 'a','user' => 'b')); function tesutoFunc($arrays=array()){ //ここをなぜtesutoFunc($arrays)と書かないのか? print_r($arrays); } ?>

    • ベストアンサー
    • PHP
  • phpで配列の重複する項目を多い順に並べたいです!

    $a = array("hoge","piyo","hoge","banana","hoge","piyo"); ↓ $b = array("hoge","piyo","banana"); みたいな配列があったとき、上のように重複する項目をまとめて、 さらに多い順に並び替えるにはどのようなコードを書けば良いですか?

    • ベストアンサー
    • PHP
  • 配列の要素(value)に、変数を格納するのはダメ??

    PHP5の環境で作業をしています。 $apple = "りんご"; $orange = "みかん"; $banana = "バナナ"; $array_test = array("$apple","$orange""$banana"); print_r($array_test); /*------------- 結果: Array ( [0] => りんご [1] => みかん [2] => バナナ ) -------------*/ すごく初歩的なことをお聞きしているかもしれませんが、 配列の要素に「変数」を入れるのはダメでしたでしょうか? 検索して探してみても、なかなか出てこないので…。 (検索の仕方が悪いだけでしょうか。) 意外に見つからないので、驚いています。 実際、上のコードで試すと、問題なく希望通りの結果を返してくれます。 でも、これは、作法的にはよろしくないのでしょうか?

    • ベストアンサー
    • PHP
  • ExcelVBA ユーザ定義関数と定数配列

    2010以降のExcelVBAです ユーザー定義関数として使うfunction 此の引数として 幾つかの項に配列数式、又は定数配列を与えたいのです が、 此の際の 引数の受け方と処理の仕方 此が判りません 例を交え お教え願えないでしょうか? 宜しくお願い致します。

  • jQueryでの、引数を取るJS関数の呼出方法

    jQueryの学習をしています。 HTML & JavaScriptで下記のように書かれているコード <input type=button id=button1 onclick=func_a() /> <script> function func1(){ //処理いろいろ } </script> は、jQueryを使って書くと、 $('#button1').live('click', func_a); このように書けます。 <input type=button id=button1 onclick=func_b(arg1, arg2) /> <script> function func_b(argument1, argument2){ //処理いろいろ } のように引数を取る関数は jQueryではどのように書けばよいのでしょうか? $('#button1').live('click', func_b(arg1, arg2)); とは書けなかったので、今は、 if (arg1 == xxx){ $('#button1').live('click', func_b_1_1); } else { $('#button1').live('click', func_b_1_2); } などのように引数別に同じような関数を創って書いています。 DRY原則という同じコードを二度書くなという約束もあるようなので、 きっといい方法があると思うのですが、 お詳しい方、教えていただけるとうれしいです。 どうぞ、よろしくお願いいたします。