2017-04-03 8 views
-1

私は関数のために順番に並んでいる引数の配列を持っています。Php |未知の長さの引数の配列を個別に関数に渡す方法

配列内の項目数が異なります。配列の各項目を関数に個別に渡すことができるようにしたいとします(たとえば、func(arg1, arg2, arg3, arg4);)。配列全体を渡すのとは反対に。

配列の長さはわかりませんが、呼び出す関数によって異なります。 PHPで

+0

はあなたが意味ですかPHPのスプラット演算子? – Daan

答えて

0

は、PHP 5.6以降、あなたはあなたがこのようなあなたの関数を呼び出すことができますVariable-length argument listsを持っている:

$arr = array(1, 2, 5, "ten"); 

、あなたはこのようにそれを呼び出すことによって機能に$arrすべての要素を送信することができます:

myFunc(...$arr); 
0

あなたが持っている:その目的のために

。あなたは罰金PHP 5.6を使用している場合、あなたはスプラット演算子を持つ

EDIT。ドキュメント(link)からサンプルを引用:

<?php 
function add($a, $b, $c) { 
    return $a + $b + $c; 
} 

$operators = [2, 3]; 
echo add(1, ...$operators); 
+0

私は彼の問題は可変サイズの配列の要素を関数に送り、その要素が個々のパラメータとしてそれらの要素を見るようにすることだと思います。 –

+0

おそらくあなたは正しいでしょう。私は答えを編集しました。残念ながら、私は今日あなたの投票を使い果たしたので、私はあなたをアップアップすることはできません;(Perhpasあなたはそれをもっと記述的で明快にするために編集しなければなりません。 –

0

あなたは、その引数が配列である機能を持っている意味場合は、すべての配列要素を取得するためにforeachを使用することができます。

function my_func($arg_array) 
    { 
    foreach($arg_array as $key=>$value) 
    { 
    ...... 
    } 
    .... 
    } 

しかし、あなたの場合引数が不明な関数があり、引数を含む配列を配列として返す関数func_get_argsを使用できることを意味します。

function my_func() 
    { 
    foreach(func_get_args() as $key=>$value) 
    { 
    ...... 
    } 
    .... 
    } 
0

用途:call_user_func_array("functionName", $arrayofArgs);

<?php 

function unknown($arg1,$arg2,$arg3){ 
    echo "arg1 = $arg1 <br>"; 
    echo "arg1 = $arg2 <br>"; 
    echo "arg1 = $arg3 <br>"; 

} 


$array = [ 
    "arg1" => "Hi", 
    "arg2" => "Marhaba", 
    "arg3" => "Hola", 
    "arg4" => "foo" 
]; 

call_user_func_array("unknown", $array); 
?> 

とあなたは[ "クラス名"、 "methodNameの"]

PHPのドキュメントの配列として最初のパラメータを渡すことで、クラスから関数を呼び出すことができます。 http://php.net/manual/en/function.call-user-func-array.php

関連する問題