1

これは設計上回避すべきもののように思えますが、それがひどく必要であるとだけ言っておきましょう。初期化中に値に属するキーを参照することは可能ですか?

これが私が想像するものです(私がそれを必要とする場合とは異なりますが、キーも原始的です):

$array = array(25 => "My key is " . $this->key);

配列キーが各値で使用されるため、これが必要です。実際には、値は最初の配列キーが使用される値を持つ別の配列です。コメントで言ったように、乾いた状態に保ちたいです。それをすることは問題ありませんが、私はそれをうまくやりたいです;)

4

2 に答える 2

1

自分で配列を作成している場合は、次のようにキー値を配列値に配置できます。

$array = array(25 => "My key is 25");

すでに配列がある場合は、を使用してforeachその値にすべてのキーを追加できます。

foreach($array as $key => $value) {
    $array[$key] = sprintf('%s %s', $value, $key);
}

または、既存の配列のキーの配列が必要な場合は、key => valueを維持したいが、キーと値を反転させたい場合は、 array_flipのいずれかを使用できます。または、キーの配列だけが必要な場合は、 array_keysを使用できます。

必要なものを作成するには:配列をどこかで初期化し、その値にキーを追加しないでください。ArrayAccessCountableを実装して、次のようにすることができます。

public function offsetGet($offset) {
    return isset($this->container[$offset]) 
                ? $this->container[$offset] . ' ' . $offset 
                : null;
}

またはこのようなもの。ArrayAccessただし、この場合、実装のインスタンスとなるには、この配列を含む変数が必要です。また、このクラスの使用法によっては、おそらくより多くのインターフェースを実装する必要があります。

于 2013-01-09T09:41:57.460 に答える
0

いいえ、値を定義するときにキーを参照する方法はありません。文字列に埋め込むプリプロセッサを作成する場合を除きます。しかし、それはプリミティブ値に対してのみ機能します。

于 2013-01-09T09:44:00.970 に答える