2017-08-25 18 views
-1

PHP 5.6以降、配列として定数を設定できますが、動的に構築することは可能ですか?php const配列に動的に追加しますか?

const FIELDS = array("email","firstName"); 

しかし、私は一定の代わりに移入し、クエリを実行したいと思います:

これは動作します

while($row = mysqli_fetch_assoc($results)) { 
    const FIELDS[] = $row['field']; 
} 

をしかし、それは動作しません。私も試みた:

while($row = mysqli_fetch_assoc($results)) { 
    $array[] = $row['field']; 
} 
const FIELDS = $array; 

しかし、これも機能しません。これを達成する方法はありますか?または、配列を定数として設定するには、ハードコード化する必要がありますか?

+0

'define(" FIELDS "、$ array)'はどうでしょうか? PHP7が必要です。しかし、定数はそれだけです - 定数です!代わりに変数を使用できないのはなぜですか?それはクラスでの使用のためですか? – Qirel

+0

定数は一定です。変更された場合は変数です。 –

+0

@AlexBlex私はそれを取得し、使用中に変数を変更しようとしていません。作成時にリモートソースから値を取得するだけです。 – Matt

答えて

0

私は完全にこれは一定の不適切な使用である、と私はそれは単に変数を使用するように変更しましたので、しかし、認める - これは私はあなたがそれを達成する可能性が見つけた方法です:

while($row = mysqli_fetch_assoc($results)) { 
    $array[] = $row['field']; 
} 
DEFINE('FIELDS', serialize($array)); 
print_r(unserialize(FIELDS)); 

最初に配列をシリアライズすることなく、私はDEFINEアプローチを動作させることができませんでした。(これはおそらく7.0とは異なりますか?)これは出力前にシリアル化を解除する必要があります。

0

define('FIELDS', $array);をお試しください。これにより、リテラル文字列の代わりに変数を使用することができます。 HERESにいくつかのより多くの情報についてdefineconst VS:define() vs const

これら二つの方法の基本的な違いは、constの が、一方、実行 時にそれらを定義する定義、コンパイル時に定数を定義していることです。

関連する問題