34

こんにちは、foreach ($array as $k=>$v) を使用せずにこれを行う方法があるかどうかを尋ねたいと思います。うまくいくことはわかっていますが、知っていればもっとエレガントな方法を探しています。だから私の配列は次のようでした:

1 = 231
2 = 432
3 = 324

私はそれを裏返し、それは次のようになりました: 231 => 1, 432 =>2, 324 => 3. 今私がする必要があるのは、すべての値を'1'

4

8 に答える 8

64

使用できますarray_fill_keys

$array = array(
    1 => 231,
    2 => 432,
    3 => 324
);

$array = array_flip($array);

$array = array_fill_keys(array_keys($array), 1);
于 2012-06-22T14:53:29.737 に答える
19

array_fill_keys()は、必要なものである必要があります。

$keys = array_keys($yourArray);
$filled = array_fill_keys($keys, 1);
于 2012-06-22T14:53:11.287 に答える
11

PHP > 5.3では、無名関数を使用できます。

array_walk($array,function(&$value){$value=1;});

注: 値は参照によって渡されます。

于 2015-02-13T06:57:28.520 に答える
5

この関数を探していると思います: array_fill()

上記のリンクから:

「値パラメーターの値の num エントリで配列を埋めます。キーは start_index パラメーターから始まります。」

ただし、インデックスが数値ではない、および/または列挙可能でない場合 (たとえば、231 から 324 まで) は、Rocket が言うように、 array_fill_keys()または通常の foreach を使用する方がよい場合があります。

于 2012-06-22T14:52:38.840 に答える
2

array_map や fill_keys などのメソッドを呼び出すと、ループを使用して配列を反復処理します。ここにあるarray_mapなどのものが必要なようです

あなたがそれをよりエレガントだと考えるなら、それぞれに:)

于 2012-06-22T14:54:59.380 に答える