ホームページ  >  記事  >  バックエンド開発  >  PHP の組み込み関数 create_function によって作成された関数パラメータ リストと関数本体の引用符の問題

PHP の組み込み関数 create_function によって作成された関数パラメータ リストと関数本体の引用符の問題

WBOY
WBOYオリジナル
2016-06-23 14:17:48895ブラウズ

create_function で作成された関数

PHP の組み込み関数 create_function を使用して作成された関数。
create_function('$item','return $item*3;')
作成した関数のパラメータリストと関数本体を引用符で囲む必要がある理由をみんなに尋ねる

ディスカッションに返信する (解決策)

string create_function ( string $args , string $code )
両方のパラメータは文字列です

その場合、関数に送信されるパラメータは変数にすることもできます

create_function には 2 つの文字列パラメータを渡す必要があるため

あなたのコードは同等ですto

function tmp($item) { return $item*3; }$b = array_map('tmp', $a);

クロージャを使用するだけです
$b = array_map(function($item) { return $item*3; }, $a);

それでは、関数に送信されるパラメータも変数にすることはできませんか?

$item はすでに匿名関数に送信される変数です。

$a=array(100,200,300);
$b=array_map(create_function('$item','return $item*3;'),$a); つまり、('$item',' return $item) *3;') これらは create_function 関数の 2 つのパラメータです。

$a=array(100,200,300); $b=array_map('$ item','return $item*3;'),$a);
var_dump($b);
create_function には 2 つの文字列を渡す必要があります。ただし、ここでの $a のパラメータは 100 200 300 であり、これらは数値です。助けてください

function tmp($item) { return $item*3; }

$b = array_map('tmp', $a);

このように書かれていますが、何か質問はありますか?

create_function には 2 つの文字列を渡す必要があります
create_function によって生成された関数にも 2 つの文字列を渡す必要があるという意味ではありません
create_function に渡す必要がある 2 つの文字列は、次の 2 つの文字列です:匿名関数

$a=array(100,200,300)

$b=array_map(create_function('$item','return $item*3;'),$a);
var_dump($b); ;
create_function の要件 2 つの文字列を渡しますが、ここでの $a のパラメーターは 100 200 300 です。助けてください。

create_function 自体が匿名関数を作成することです。 ) は関数であり、入力パラメータは文字列として渡す必要があります。
作成された関数のパラメータは、渡したいパラメータです。つまり、作成された匿名関数はこのパラメータを内部で直接使用するため、関数の仮パラメータ 100、200、300 が渡されます。 , ので、それを渡します。これは数値型であり、数値型が使用されます。 * 演算子により、渡されたものが数値ではない場合 (たとえば、文字列 0123)、最初に数値に変換されてから演算されます:
を参照してください:
$a=array(100,200,"011 ");
$b=array_map( create_function('$item','return $item*3;'),$a);
var_dump($b);


ありがとうございます。わかりました。ところで、もう一つ質問がありますが、私は初心者なので理解できないことがたくさんあります

はい、それらはすべて変数の形式で定義されています。上記の専門家に感謝します

黙って集めてください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。