web-dev-qa-db-ja.com

単純な配列を連想配列に変換する方法は?

PHPで値をisset($array[$value])でチェックできるように、単純な配列を連想配列に変換する最速の方法は何ですか?]

つまり次の変換を行う最速の方法:

$array = array(1, 2, 3, 4, 5);
$assoc = array();

foreach ($array as $i => $value) {
        $assoc[$value] = 1;
}
25
user773755

array_flip() はまさにそれを行っています:

array_flip()は、フリップ順序で array を返します。つまり、transは値になり、transからの値はキーになります。

transの値は有効なキーである必要があります。つまり、 integer または string である必要があります。値のタイプが間違っていると警告が発せられ、問題のキー/値ペアは反転されません

値に複数の出現がある場合、最新のキーがその値として使用され、他のすべてのキーは失われます。


しかし、それとは別に、PHPには1種類の配列しかありません。数値(「単純」と呼ぶ)配列でさえも連想配列です。

18
Felix Kling

コードは次のものとまったく同じです。

_$assoc = array_fill_keys(array(1, 2, 3, 4, 5), 1); // or
$assoc = array_fill_keys(range(1, 5), 1);
_

array_flip()、あなたの目的には機能するかもしれませんが、同じではありません。

PHP参照: array_fill_keys()array_flip()

32
Alix Axel

まだこれを行う方法について疑問がある場合は、 array_combine 関数を使用することにより、これに対する簡単な解決策があります。

$array = array(1, 2, 3, 4, 5);
$assoc = array_combine($array,$array);
1
A.M.N.Bandara

このロジックを使用するだけです

$var1 = json_encode($arr1, JSON_FORCE_OBJECT);
$var1 = json_decode($var1);

ここで、$ arr1は連想配列に変換する必要がある配列です。これはjson_encodeとjson_decodeで実現できます

0
Thyagi
function simple_to_associative($array) {
    $new_array = [];
    $i = 0;
    $last_elem = end($array);
    $nr_elems = count($array);
    foreach ($array as $index=>$value) {
        if($i % 2 == 0 && $last_elem == $value) {
            $new_array[$value] = '';
        } elseif($i % 2 == 0) {
            $new_array[$value] = $array[$index + 1];
        }
        $i++;
    }
    return $new_array;
}

無制限の要素の単純な配列で動作します。

0
Adrian