2016-11-30 10 views
-1

Ich bin ziemlich nicht in der Lage, die Logik für meine Anforderung zu erhalten.2 oder mehr Arrays aus einer Liste

Lets betrachten Ich habe ein Array

Array 
(
    [0] => 1 
    [1] => 1 
    [2] => 2 
    [3] => 1 
    [4] => 3 
    [5] => 3 
) 

Ich möchte die unten Array auf Basis aufzuspalten, wenn das Array Element seinen vorherigen Element entspricht. , d. H. Im obigen Beispiel stimmt der Wert von [1] mit dem Wert von [0] überein. Setzen Sie es daher in das gleiche Array wie [0]. Überprüfen Sie nun, ob der Wert von [2] mit dem Wert von [1] übereinstimmt, wenn er übereinstimmt, und setzen Sie ihn in dasselbe Array, wenn er nicht in ein anderes Array eingefügt wird. Der Prozess wird fortgesetzt.

Unten ist ein Beispiel für die gewünschte outpout.

Array 
     (
      [0] => 1 
      [1] => 1 
     ) 
Array 
    (
     [0] => 2 
    ) 

    Array 
     (
      [0] => 1 
     ) 
    Array 
     (
      [0] => 3 
      [1] => 3 
     ) 

Vielen Dank für Ihre Hilfe im Voraus.

Justin

Antwort

1

Sie können dieses Ergebnis in einer Schleife erhalten, die auf vorherigem Element überprüft. Die Ausgabe kann ein Array von Arrays sein! (oder etwas, was Sie bevorzugen .. tun Sie Ihr Ding hier)

$array1 = array(1, 1, 2, 1, 3, 3); 
$output_array=array(); 
$previous_value=""; 
$output_array_index=0; 
foreach ($array1 as $value) { 
    if($value != $previous_value){ 
     $output_array_index+=1; 
    } 
    $output_array[$output_array_index][]=$value; 
    $previous_value=$value; 
} 
print_r($output_array); 

so, lassen Sie mich wissen, wenn Sie mehr Zeiger benötigen! Array-Logik macht Spaß, und php lässt Sie viel tun, out of the box. obwohl dieser spezifische Bedarf nicht abgedeckt ist, schauen Sie, wenn Sie eine Minute haben @ das Handbuch, es wird Ihnen Zeit sparen in der Zukunft, Garantie http://php.net/manual/en/ref.array.php

+0

Vielen Dank. Lass es mich versuchen. Gib mir bitte eine Minute. – Justin

+0

Ich bin ein mehrdimensionales Array erhalten, wobei jedes Element :(Array ( [1] getrennt => Array ( [0] => 1 ) [2] => Array ( [0] = > 1 ) [3] => Array ( [0] => 2 ) [4] => Array ( [0] => 1 ) [5] => Array ( [0] => 3 ) [6] => Array ( [0] => 3 ) ) – Justin

+0

Danke, es hat funktioniert. – Justin

0

Diese Frage ist ein wenig verwirrend, aber klingt nicht allzu schwierig zu implementieren, wenn ich es richtig zu verstehen bin. Alles, was Sie tun müssen, ist ein temporäres Array (oder Array-Liste), die Benutzereingaben überprüft. Wenn diese Benutzereingabe die gleiche wie die vorherige Eingabe ist (Sie können eine Zählervariable beibehalten und prüfen, ob ArrayList.get(counter) == ArrayList.get(counter-1)). Fügen Sie Dinge zu dieser temporären arrayList hinzu und wenn Sie eine Nummer haben, die anders ist, durchlaufen Sie einfach die Arraylist und fügen Sie sie zu einem neuen Array hinzu.

Eine andere Frage, die Sie beachten müssen, ist, wie Sie all diese Arrays speichern werden. Dazu möchten Sie vielleicht eine ArrayList erstellen, die Arrays enthält. Auf diese Weise können Sie, nachdem Sie Benutzereingaben gefunden haben, die sich von der vorherigen Eingabe unterscheiden, einfach die toArray -Methode der ArrayList-Klasse verwenden und sie der ArrayList hinzufügen, die alle Ihre eigenen Arrays enthält!

Hoffe, das hilft!

Verwandte Themen