[英]Is there a more efficient way to make sure a randomized list doesn't contain a portion of the URL?
我正在尋找一種更有效的方法來確保四個項的隨機列表(來自數組)不包含當前URL的文件名。
該解決方案不使用數據庫。 $relatedArray[$rand_keys[0]]
是在此.php文件中創建的標准數組。 它包含大約100個代碼段,每個代碼段(數組中的項目)都包含一個唯一的url。
我提出了以下解決方案。 它有效,但是我猜想有一個更有效的解決方案。 任何建議,不勝感激。
// How to isolate a filename in a URL - https://stackoverflow.com/questions/2183486/php-get-file-name-without-file-extension
$fileName = pathinfo($_SERVER['REQUEST_URI']);
$rand_keys = array_rand($relatedArray, 4);
//Ignore if array value contains variable value. https://stackoverflow.com/questions/4366730/how-do-i-check-if-a-string-contains-a-specific-word-in-php
if (strpos($relatedArray[$rand_keys[0]], $fileName['filename']) !== false) {
echo $relatedArray[$rand_keys[1]] . "\n<br>";
echo $relatedArray[$rand_keys[2]] . "\n<br>";
echo $relatedArray[$rand_keys[3]] . "\n<br>";
} elseif (strpos($relatedArray[$rand_keys[1]], $fileName['filename']) !== false) {
echo $relatedArray[$rand_keys[0]] . "\n<br>";
echo $relatedArray[$rand_keys[2]] . "\n<br>";
echo $relatedArray[$rand_keys[3]] . "\n<br>";
} elseif (strpos($relatedArray[$rand_keys[2]], $fileName['filename']) !== false) {
echo $relatedArray[$rand_keys[0]] . "\n<br>";
echo $relatedArray[$rand_keys[1]] . "\n<br>";
echo $relatedArray[$rand_keys[3]] . "\n<br>";
} elseif (strpos($relatedArray[$rand_keys[3]], $fileName['filename']) !== false) {
echo $relatedArray[$rand_keys[0]] . "\n<br>";
echo $relatedArray[$rand_keys[1]] . "\n<br>";
echo $relatedArray[$rand_keys[2]] . "\n<br>";
} else {
echo $relatedArray[$rand_keys[0]] . "\n<br>";
echo $relatedArray[$rand_keys[1]] . "\n<br>";
echo $relatedArray[$rand_keys[2]] . "\n<br>";
echo $relatedArray[$rand_keys[3]] . "\n<br>";
}
使用array_filter
過濾$rand_keys
數組:
$name = $fileName['filename'];
$rand_keys = array_rand($relatedArray, 4);
$filtered = array_filter(
$rand_keys,
function ($v) use ($name) { return strpos($v, $name) === false; }
);
print_r($filtered);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.