2013-03-30 87 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

我認爲他知道如何直接訪問這些值,而不需要周圍的數組構造。 –

相關問題