2016-12-31 5 views
1

Ich habe ein Array: $ content.Ich möchte einige Elemente eines Arrays auf Array-Oberseite verschieben

Es ist Schlüssel sind nur Zahlen. Ich möchte überprüfen, ob ein Wert ein gültiges Verzeichnis ist. Wenn dies der Fall ist, möchte ich den Wert an den Anfang des Arrays verschieben, wobei der Schlüssel erhalten bleibt, oder mit anderen Worten, den gesamten Schlüssel und Wert verschieben. Ist das möglich? Hier ist der Code:

foreach ($content as $item){ 
    if(is_dir("path/$item")){ 
     # the code for values movement should go here 
    } 
} 
+2

Das klingt, als ob Sie Ihr Array sortieren möchten. Wahrscheinlich möchten Sie nach goort for 'usort()' googlen, damit Sie Ihr Array mit Ihrer eigenen Sortierfunktion sortieren können, so dass sich alle Verzeichnisse oben und der Rest unten befinden. – Rizier123

+0

Ja! Aber ich weiß nicht, wie ich das machen soll. Ich kann nicht verstehen, wie usort() tatsächlich funktioniert. – default

+0

Haben Sie die Handbuchseite gelesen und die Beispiele betrachtet? – Rizier123

Antwort

0

Sie können dies erreichen, indem eine temporäre Array in Ihrem $ content Array verschmelzenden:

$temp = array($item => $content[$item]); 
unset($content[$item]); 
$content = $temp + $content; 
+0

Das verschiebt tatsächlich die Werte an den Anfang des Arrays, behält aber die Schlüssel nicht bei. Ich denke, dass ich dazu nicht sehr genau war. – default

+0

Sie meinen, Sie wollen immer den ersten Schlüssel umschreiben? –

+0

Ich denke, das passiert, weil Sie ein numerisches indiziertes Array haben, nicht assoziativ. Versuchen Sie, Strings als Schlüssel zu verwenden, und der Schlüssel bleibt erhalten. –

0

könnten Sie spalten diese Arrays Faust und dann verschmelzen sie wieder Also, wenn es ein gültiges Verzeichnis zu Array1 hinzufügen und sonst zu Array2 hinzufügen

Verwandte Themen