2013-03-30 60 views
0

我想要做的是从表单中创建条目列表,但如果在表单中多次输入同一个条目,则不希望同一个条目在列表中多次显示。例如,假设一个人输入“1”,但随后两个人输入“2”,我只希望2在列表中出现一次。我可以使用什么功能?只有当它还没有被回显时才会回声?

回答

1

在这种情况下,你应该使用PHP Arrays。数组是二维表。

/* Array 
* key => value 
* @key personID 
* @value optionValue 
*/ 
$array = array(
    1 => 1, // Person 1 chose Option 1 
    2 => 2, // Person 2 chose Option 2 
    3 => 2 // Person 3 chose Option 2 
); 
print_r($array); 

打印

Array 
(
    [1] => 1 
    [2] => 2 
    [3] => 2 
) 

您现在可以通过通过array_unique($array);访问数组获取一组唯一值的。

$array_unique = array_unique($array); 
$array_unique_values = array_values($array_unique); 

// Access array values directly and store into variables. 
// Notice that arrays in PHP start with the index zero. 
$option1 = $array_unique_values[0]; 
$option2 = $array_unique_values[1]; 

echo "Option #1: " . $option1 . "\n"; 
echo "Option #2: " . $option2; 

打印

Option #1: 1 
Option #2: 2 

瞧。

+0

非常欢迎。 请考虑[语言>类型>数组](http://www.php.net/manual/en/language.types.array.php)和[数组函数](http://www.php.net) /manual/en/ref.array.php)了解更多关于PHP及其函数的信息。 –

0

在PHP中没有内置函数。但是你可以用类似尝试:

$echoList = array(); 
function echoOnce($text) 
{ 
    global $echoList; 
    if(!in_array($text, $echoList)) { 
     echo $text; 
     $echoList[] = $text; 
    } 
} 

,然后只用echoOnce("whatever")代替echo "whatever"

+0

对这样的东西使用一个全局变量是不必要的,更不用说它在你的代码中引入一个全局依赖,'in_array()'将执行一个'O(n)'搜索来输出一个变量。这对我来说似乎非常低效。 – nickb

2

,最好的办法应该是所有条目存储在数组中(基本数值索引数组),然后删除与

uniqueEntries = array_unique($yourEntries); 

复制的文档:代码array_unique

例如:

$entries = array(); 
$entries[] = 1; 
$entries[] = 1; 
$entries[] = 2; 

$entries = array_unique($entries); 

print_r($entries); 

将输出:

​​3210
+0

这正是我需要的,就像魅力一样!非常感谢! 编辑:一般来说,在输出中,我将如何能够停止出现“数组”文本? – tmnol

+0

不明白你的问题。如果您正在讨论数组数据,则它由'print_r()'打印。移除'print_r()',你将不会再看到数组。 – MatRt

+0

我认为他知道如何直接访问这些值,而不需要周围的数组构造。 –

相关问题