0

次のようなデータの配列があります。

$array[0] = array('key1' => 'value1a','key2' => 'value2a','key3' => 'value3a');
$array[1] = array('key1' => 'value1a','key2' => 'value2b','key3' => 'value3b');
$array[2] = array('key1' => 'value1b','key2' => 'value2b','key3' => 'value3c');
$array[3] = array('key1' => 'value1c','key2' => 'value2c','key3' => 'value3c');

このデータを使用して、各キーに基づいて一連のドロップダウン リストを作成する必要があります。ただし、各ドロップダウン リストに一意の値のみが表示されるように、重複を削除したいと考えています。

私はから始めました:

<select>
<?php   
    foreach($array AS $arr)
        {
            print "<option>".$arr['key1']."</option>";
        };
?>
</select></br>

予想どおり、これにより 4 つのエントリが得られましたが、そのうちの 2 つは同じものでした。

だから私は試しました:

<select>
<?php   
    foreach(array_unique($array) AS $arr)
        {
            print "<option>".$arr['key1']."</option>";
        };
?>
</select></br>

また:

<select>
    <?php   
        $arr = array_unique($array);
        foreach ($arr AS $a)
            {
                print "<option>".$a['key1']."</option>";
            };
    ?>
</select></br>  

しかし、これらは 1 つの項目 (value1a) しか提供しません。詳しく調べてみると、実際には一連のエラーが生成されていることがわかります。

Notice:  Array to string conversion in C:\Apache24\htdocs\TEST\test29.php on line 39

しかし、これがなぜなのか、または必要なリストを取得するために修正する方法がわかりませんか?

一意のエントリだけのリストを取得するにはどうすればよいですか?

4

1 に答える 1

3

PHP 5.5 以降では、array_column関数を使用できます。

    foreach(array_unique(array_column($array, 'key1')) AS $arr)
    {
        print "<option>".$arr."</option>";
    };

ただし、古いバージョンを使用している場合は、次のことができます。

    foreach(array_unique(array_map(function($rgItem)
    {
       return $rgItem['key1'];
    }, $array)) AS $arr)
    {
        print "<option>".$arr."</option>";
    };
于 2013-09-04T08:12:32.613 に答える