2016-09-21 4 views
1

Ich frage mich, wie ich diese 2 Array-Werte zufällig anzeigen könnte. Ich habe versucht, das zufällige zu machen, aber gescheitert. Hier sind meine Dateien:Wie kann ich ein Array randomisieren, während seine Elemente gruppiert bleiben?

<?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 

Ich will es zufällig die Saiten in name.txt anzuzeigen, aber die Sätze von Zeichenketten wie „Test2 TestTwo“ zusammen zu halten, so dass sie zur gleichen Zeit angezeigt werden. Wie kann ich das machen?

+0

Suchen Sie für 'array_rand()' ?! – Rizier123

+0

@ Rizier123 Ja, aber ich weiß nicht, wie ich es zu diesem Code hinzufügen soll:/Ich habe versucht, aber es hat mir einen HTTP-Fehler 500, weil ich es falsch gemacht habe –

+0

Es scheint, als könnten Sie Ihre ersten zwei Codezeilen reduzieren auf: '$ names = file (" name.txt ", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);' und dann können Sie Ihr Array in Gruppen von 2 teilen, z '$ name = array_chunk ($ name, 2);'. Danach, wie ich bereits sagte, erhalten Sie Ihren zufälligen Schlüssel mit 'array_rand()', z. '$ key = array_rand ($ name);'. Am Ende drucken Sie einfach das Zufallsergebnis aus: echo implode ("
", $ names [$ key]); ' – Rizier123

Antwort

2

Nachdem Sie Ihre Werte in einem Array erhalten haben, können Sie array_chunk verwenden, um sie in Unterarrays mit zwei Elementen aufzuteilen, so dass die beiden Teile, die Sie wünschen, zusammenbleiben können, wenn sie randomisiert werden. Dann nur shuffle es vor der Ausgabe.

$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

Hier gibt zwei Möglichkeiten, mit array_chunk(), so dass die zwei Aufenthalt abgestimmt:

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

Oder:

$names = array_chunk($names, 2); 
shuffle($names); 
echo $names[0][0] . $names[0][1]; 
Verwandte Themen