1

$config内部に配列を持つ変数があります。smartyでは、次のように変数を割り当てます。

$smarty->assign('config', $config);

私がそれを呼ぶとき、私はこれを使いました:{$config.wateverarrayyouwant} 今私はphpで同じことをしたいです。define同じようにやりたいです。すべての配列を1行で定義するにはどうすればよい$configですか?私はこれを使用して一度に1つずつ変数を定義する方法しか知りません:

define('wateverarrayyouwant', $config['wateverarrayyouwant']);

wateverarrayyouwantは任意の配列である可能性があるため、変数に変更してみました。

define('$wateverarrayyouwant', $config[$wateverarrayyouwant]);

しかし、上記のコードは機能しません。私が望むことを達成するための良い方法は何ですか?

4

3 に答える 3

2

define配列内のキーと値のペアごとにを作成する場合は、次を使用できます。

<?php
foreach($config as $key => $value) {
    define($key, $value);
}

ただし、define値を配列することはできません。すべてdefineの'はスカラーでなければなりません。

定数の値。スカラー値とnull値のみが許可されます。スカラー値は、整数、浮動小数点、文字列、またはブール値です。

OPの回答をチェックして、彼が達成しようとしていることの詳細を確認すると、次の方法で実行できます。

<?php
foreach($config as $key => $value){
    $$key = $value;
}
?>
于 2013-02-25T00:11:09.860 に答える
1

この質問はできません。変数を定数として定義しようとしているからです。変数の文字をどのように減らすことができるかを考えていたところですが、そのままにしておく方がよいとは思いませんでした。論理的には、なぜ誰かがに変更$config[$wateverarrayyouwant]する必要があるのですかwateverarrayyouwant。私はきちんとしたコードを維持することだけを考えていました。しかし今私はそれについて考えています..それをそのままにしておく方が良いです:$config[$wateverarrayyouwant]

これは次の方法で実行できます。

foreach($config as $key => $value){
    $$key = $value;
}
于 2013-02-25T06:01:29.667 に答える
0

ここで define を使いたくないかもしれません。define単純ではない変数を作成するために使用されconstants、それには特定の意味合いがあります。

  • それらはスクリプトの存続期間中不変です
  • それらはスカラーでなければなりません

配列変数だけが必要な場合は、通常どおり次のように定義します。

$whatever = array(
  'key1' => 'value1'
);
于 2013-02-25T00:33:27.363 に答える