我想在for循环中使用唯一数组。请看我的代码。
Array ( [0] => Pritesh [1] => Pritesh [2] => Nilesh )
现在我使用“UNIQUE”功能获取唯一值
Array ( [0] => Pritesh [2] => Nilesh )
但现在的问题是当我使用for循环时
for($p = 0; $p < count($unique); $p++)
{ echo $uniques;
echo '<option value="'.$unique[$p].'">'.$unique[$p].'</option>';
}
因此第二个值显示为空白,因为数组计数为2且Key为0.2。
我如何使用它。
答案 0 :(得分:4)
在你进入循环之前这样做..
$yourarray = array_values(array_unique($repeated_values_array));
现在在 $yourarray
循环中使用for
。
答案 1 :(得分:2)
foreach($uniques as $key => $unique) {
echo '<option value="'.$unique.'">'.$unique.'</option>';
}
如评论中所述,如果您不需要,则无需为密钥分配变量。 (我刚刚使用的是一个方便的参考)。所以你可以这样做:
foreach($uniques as $unique) {
echo '<option value="'.$unique.'">'.$unique.'</option>';
}
答案 2 :(得分:2)
请阅读the manual。 array_unique
不重置数组键。此外,for
循环一切都很好,但foreach
是一种更适合处理数组(和对象)的语言结构。
也就是说,应用array_unique
后重置数组密钥的最快方法是sort
数组:
$a = array( 'Pritesh','Pritesh','Nilesh' );
$b = array_unique($a);
sort($b);
var_dump($b);
这导致:
array(2) {
[0]=>
string(6) "Nilesh"
[1]=>
string(7) "Pritesh"
}
哪个适用于for
和foreach
。
编辑:
编程TMTOWTDI通常就是这种情况(有多种方法可以做到)。这里有几种方法,从有效到荒谬:
快速:
foreach($uniques as $unique) echo '<option value="', $unique, '">', $unique,'</option>';
是的,这些是逗号,逗号的+回声实际上比串联更快(~20-30%)
何时使用:无论什么时候你都喜欢它,它不会改变$uniques
数组(所以它仍然是不一致的索引),但是它很容易阅读。
修复$uniques
索引:
sort($uniques);
foreach($uniques as $unique) echo '';//same deal
与以前版本的不同之处在于,您也可以在此处将foreach
替换为for
,并且$uniques
数组将再次正确编入索引。元素的顺序可能已更改
如果元素的顺序很重要,并且您想要一个整齐的索引数组,请使用:
$uniques = array_values($uniques);//as Shankar Damodaran suggested
当您的用例符合上述特定且不太可能的情况时使用 或者, 从这里开始变得荒谬:
function keepOrder($a, $b)
{
return 0;
}
usort($uniques, 'keepOrder);
使用: 从不
由于我们 在过度设计解决方案方面取得了相当大的进展,让我们将其解决为解决方案再次成为问题的延伸(警告,以下代码可能会导致眼睛出血):
//get the highest key in array, add 1
$max = max(array_keys($uniques)) + 1;
for($i=0;$i<$max;++$i) if (isset($uniques[$i])) echo $unique;
我故意让上面的代码更难以阅读,以避免任何人使用它
何时使用: 在您临床疯狂时使用,或者想看到一名同事被束缚带走,大喊“恐怖,恐怖” 。
说真的:不要用它。
答案 3 :(得分:1)
使用PHP的foreach
功能
foreach($unique as $val)
{
echo $val;
echo '<option value="'.$val.'">'.$val.'</option>';
}
答案 4 :(得分:1)
使用foreach
代替for
循环
如果您还需要密钥,请执行以下操作:
foreach ($unique as $key=>$value)
其中$key
将是数组键。
答案 5 :(得分:0)