こんにちは、foreach ($array as $k=>$v) を使用せずにこれを行う方法があるかどうかを尋ねたいと思います。うまくいくことはわかっていますが、知っていればもっとエレガントな方法を探しています。だから私の配列は次のようでした:
1 = 231
2 = 432
3 = 324
私はそれを裏返し、それは次のようになりました: 231 => 1, 432 =>2, 324 => 3
. 今私がする必要があるのは、すべての値を'1'
使用できますarray_fill_keys
:
$array = array(
1 => 231,
2 => 432,
3 => 324
);
$array = array_flip($array);
$array = array_fill_keys(array_keys($array), 1);
array_fill_keys()は、必要なものである必要があります。
$keys = array_keys($yourArray);
$filled = array_fill_keys($keys, 1);
PHP > 5.3では、無名関数を使用できます。
array_walk($array,function(&$value){$value=1;});
注: 値は参照によって渡されます。
この関数を探していると思います: array_fill()
上記のリンクから:
「値パラメーターの値の num エントリで配列を埋めます。キーは start_index パラメーターから始まります。」
ただし、インデックスが数値ではない、および/または列挙可能でない場合 (たとえば、231 から 324 まで) は、Rocket が言うように、 array_fill_keys()または通常の foreach を使用する方がよい場合があります。
array_map や fill_keys などのメソッドを呼び出すと、ループを使用して配列を反復処理します。ここにあるarray_mapなどのものが必要なようです
あなたがそれをよりエレガントだと考えるなら、それぞれに:)