34

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

つまり、次の変換を行うための最速の方法です。

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

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

5 に答える 5

38

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

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

array_flip()、それはあなたの目的のために働くかもしれませんが、それは同じではありません。

PHP ref array_fill_keys():、array_flip()

于 2011-05-27T14:31:31.123 に答える
20

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

array_flip()は、配列を反転順に返します。つまり、 transからのキーが値になり、transからの値がキーになります。

transの値は有効なキーである必要があることに注意してください。つまり、整数または文字列のいずれかである必要があります。値のタイプが間違っている場合は警告が発行され、問題のキーと値のペアは反転されません

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


しかし、それを除けば、PHPには1つのタイプの配列しかありません。数値(「単純」と呼ばれる)配列でさえ、連想的です。

于 2011-05-27T14:08:50.997 に答える
17

誰かがまだこれを行う方法を疑問に思っている場合は、array_combine関数を使用することでこれを簡単に解決できます。

$array = array(1, 2, 3, 4, 5);
$assoc = array_combine($array,$array);
于 2018-11-20T08:37:55.670 に答える
0

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

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

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

于 2018-05-14T13:02:27.120 に答える
-1
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;
}

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

于 2019-07-18T16:06:37.877 に答える