【问题标题】:php - get only unique values from array into dropdown listphp - 仅从数组中获取唯一值到下拉列表中
【发布时间】:2013-09-04 08:08:28
【问题描述】:

我有一个类似于以下的数据数组:

$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 个条目,其中两个是相同的。

所以我尝试了:

<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>  

但是这些只给了我一个项目(value1a)。经过仔细检查,我发现它实际上产生了一系列错误:

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

但我不知道为什么会这样,或者如何解决它以获得我想要的列表?

如何获取唯一条目的列表?

【问题讨论】:

标签: php


【解决方案1】:

从 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>";
    };

【讨论】:

  • 为此干杯,我目前正在运行 PHP 5.4,但您提供的第二个选项似乎很有效。
猜你喜欢
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
相关资源
最近更新 更多