我有一组类似于以下内容的数据:
$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
但我无法弄清楚为什么会这样,或者如何修复它以获得我想要的列表?
如何获得仅有唯一条目的列表?
答案 0 :(得分: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>";
};