2016-09-21 38 views
1

我想知道如何隨機顯示這2個數組值。我試圖做出隨機但失敗。下面是我的文件:如何在保持元素組合在一起的同時對數組進行隨機化?

<?php 
$names=file('name.txt'); 
$fileArray = array_values(array_filter($names, "trim")); 
$randomText = $fileArray[0]; 
$randomText .= $fileArray[1]; 
?> 
<h1>Test: <?php echo $randomText; ?></h1> 

name.txt

Alim 
Qureshi 

Test2 
TestTwo 

Test3 
TestThree 

Test4 
TestFour 

Test5 
TestFive 

我希望它隨機顯示name.txt字符串,但爲了保持像「Test2的TestTwo」字符串的集合在一起,他們將同時顯示。我怎樣才能做到這一點?

+0

您是否在尋找'array_rand()'? – Rizier123

+0

@ Rizier123是的,但我不知道如何將其添加到此代碼:/我試過了,但它讓我得到了一個HTTP ERROR 500,因爲我做錯了 –

+0

看起來你可以減少前兩行代碼: '$ names = file(「name.txt」,FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);'然後你可以將你的數組分成2組,例如'$ names = array_chunk($ names,2);'。之後,正如我已經說過的,你可以用'array_rand()'來獲得你的隨機密鑰,例如'$ key = array_rand($ names);'。最後打印出隨機結果:'echo implode(「
」,$ names [$ key]);' – Rizier123

回答

2

當你在一個數組中獲得你的值後,你可以使用array_chunk將它分成兩個項目的子數組,以便你想要的兩塊可以在隨機化時保持在一起。然後在輸出之前輸入shuffle

$names = file('name.txt'); 
$fileArray = array_values(array_filter($names, "trim")); 
$fileArray = array_chunk($fileArray, 2); 
shuffle($fileArray); 

foreach ($fileArray as $chunk) { 
    $randomText = $chunk[0]; 
    $randomText .= $chunk[1]; 
    echo $randomText . '<br>'; 
} 
0

這裏使用兩種方式array_chunk()使兩者匹配住:

$names = array_chunk($names, 2); 
$rand = $names[array_rand($names)]; 
echo $rand[0] . $rand[1]; 

或者:

$names = array_chunk($names, 2); 
shuffle($names); 
echo $names[0][0] . $names[0][1]; 
相關問題