我有一個文本文件,每行有一個句子列表。目前,我只是隨機化線條,但有許多重複出現。如何將這些行放入數組中,然後隨機顯示它們,但在顯示所有句子之前不要再顯示一個句子。基本上,我需要在整個數組中循環一次,然後再次顯示引號。將文件內容獲取到數組中並對其進行洗牌。不要輸出一次以上。
1
A
回答
0
一個簡單的方法來做到這一點,而不是每次洗牌數組,只是選擇一個隨機索引。然後,將該索引存儲在列表中。這樣,如果你已經使用過這個索引(如果你將它們存儲在一個有序列表中,你可以非常快地檢查它,例如通過使用二進制搜索),你可以檢查下一個函數調用。如果索引數量等於文件中的行數,則可安全地放棄您的列表並開始新列表,因爲在該時間點已使用所有索引。
0
您可以先刪除重複行並將結果放入數組x中。
然後從數組x中選取一個隨機元素,將其打印出來,並將其移動到第二個(最初是空的)數組y中。 重複,直到數組x爲空。然後,您可以再次從數組y到數組x再次移動元素 。
1
shuffle沒有你的陣列中創建副本,所以這段代碼只是正常工作:
<?php
$list = array(1,2,3,4,5,6);
shuffle($list);
print_r($list);
?>
Array
(
[0] => 2
[1] => 3
[2] => 6
[3] => 4
[4] => 1
[5] => 5
)
這意味着你必須在你的文件中重複的行。如果你想與唯一值用這個來得到一個數組:$unique = array_unique($list);
<?php
$list = array(1,1,2,2,3,3);
$unique = array_unique($list);
shuffle($unique);
print_r($unique);
?>
Array
(
[0] => 3
[1] => 2
[2] => 1
)
相關問題
- 1. 讀取xml文件並將其內容加載到數組中
- 2. 從文本文件中讀取內容,並將其存儲到一個數組
- 3. c + +洗牌動態數組的內容?
- 4. 以編程方式獲取內容文件和主要輸出
- 5. 讀取文本文件並將其內容導出到sql
- 6. 讀取文件,並分割其內容,並在一個數組
- 7. aiobotocore-aiohttp - 獲取S3文件內容並將其傳輸到響應中
- 8. Java - 從文本文件獲取ArrayList內容並將其輸出到單獨的行(JavaMail API)
- 9. 試圖讀取文件並將其輸入到數組中
- 10. 洗牌!在ruby中n次數組
- 11. 如何從一個範圍創建一個Vec並對其進行洗牌?
- 12. 獲取目錄名稱並將其輸出到文件列表
- 13. C - 讀取文件並將內容寫入數組一個字符一次char
- 14. 接收文件並洗牌
- 15. 不同高度的分組UITableView行導致內容洗牌
- 16. 試圖獲取一組數據並將其列在文件中
- 17. 在PHP中對數組進行排序並將其推回到文件中
- 18. 從xml文件獲取節點內容並將其轉換爲php數組?
- 19. Java捕獲一個進程的所有輸出並將其記錄到文件
- 20. 將文件加載到數組中,並使用in_array對其進行檢查
- 21. 可以在不沖洗的情況下連續寫入流,並將其內容強制到大對象堆上?
- 22. 無法將文件的內容從.plist文件中獲取到數組中
- 23. 在php中亂序數組並不真正洗牌數組
- 24. 如何從文本文件中獲取匹配並將其輸出到數組中?
- 25. 如何在Java中將數組的內容輸出到文本文件中?
- 26. 獲取Ajax內容並將其過濾
- 27. 如何一次獲取一行文件的內容?
- 28. 將數組轉換爲數組並將其迭代到數組中並對其進行迭代
- 29. 命令行排序文件內容並將輸出重定向到文件
- 30. 獲取標籤的內容並將其寫入文件
展示給誰看?在什麼情況下?爲單個用戶或所有用戶循環播放? – Problematic
這只是一個單獨的文本文件,每行都有一個句子。它應該回應那句話。 –
並且您希望每個請求都顯示一行,直到顯示所有句子,然後將列表隨機化並重新開始?我仍然努力瞭解一下你在找什麼。 – Problematic