Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Ich hab piti66's Anliegen aber so verstanden, dass er einen neuen Startindex (bzw. ein gewisses Startelement) festlegt und dann ab da angefangen weiter sortiert. Und alle die Elemente, die vor dem neuen Startindex/Element lagen, sollen dann sortiert hinten wieder angefügt werden...
<?php
//Test-Array
$array = array('a','b','c','d','e','f','g','h');
//Testaufrufe der Funktion
print_r(sortByKey($array, 4));
print_r(sortByValue($array, 'f'));
function sortByKey($array, $startKey) {
//Index über die Schlüssel legen
$index = array_keys($array);
//Das Offset des Keys bestimmen
$offset = array_search($startKey, $index);
//Der Anfang des neuen Arrays extrahieren
$startArray = array_slice($array, $offset, count($array) - $offset, true);
//Das Ende des neuen Arrays extrahieren
$endArray = array_slice($array, 0, $offset, true);
//Die beiden Teile zusammensetzen und zurückgeben
return $startArray +$endArray;
}
function sortByValue($array, $startValue){
//Schlüssel des Wertes bestimmen
$key = array_search($startValue,$array);
//die SortByKey-Funktion darauf anwenden
return sortByKey($array, $key);
}
?>
P.S. passiert das hier eigentlich auch anderen, das ihr euren geänderten Text in dem Antwort-Textfeld immer mit Strg-S speichern wollt?!
<?php
//Test-Array
$array = array(
'a' => 'AA',
'b' =>'BB',
'c' => 'CC',
'd' => 'DD',
'e' => 'EE',
'f' => 'FF',
'g' => 'GG',
'h' => 'HH');
//Testaufrufe der Funktion:
//Nach Index 4: Erste Paarung: 'e'=>'EE'
print("Nach Index 4:\n");
print_r(Reorder::byOffset($array, 4));
//Nach Schlüssel: Erste Paarung 'f' => 'FF'
print("Nach Schlüssel f:\n");
print_r(Reorder::byKey($array, 'f'));
//Nach Value: Erste Paarung 'c'=>'CC'
print("Nach Wert CC:\n");
print_r(Reorder::byValue($array, 'CC'));
class Reorder{
/**
* ändert die Reihenfolge. Beginnt den Array mit dem Eintrag mit der Position $offset
* des Ausgangsarrays und hängt die vorgelagerten Einträge in unveränderter Reihenfolge hinten an
* @param $array Array
* @param $offset Long
* @return Array oder false
*/
public static function byOffset($array, $offset){
//Test ob $offset nicht grössr als die Anzahl items ist
if(count($array)-1 < abs($offset)) return false;
//Der Anfang des neuen Arrays extrahieren
$startArray = array_slice($array, $offset, count($array) - $offset, true);
//Das Ende des neuen Arrays extrahieren
$endArray = array_slice($array, 0, $offset, true);
//Die beiden Teile zusammensetzen und zurückgeben
return $startArray +$endArray;
}
/**
* ändert die Reihenfolge analog zu rorderByOffset. sucht jedoch nach dem key
* @param $array Array
* @param $startKey Variant
* @return Array oder false
*/
public static function byKey($array, $startKey) {
//Index über die Schlüssel legen
$index = array_keys($array);
//Das Offset des Keys bestimmen
$offset = array_search($startKey, $index);
//Die reorder-Funktion nach Offset anwenden
return ($offset ===false) ? false : self::byOffset($array, $offset);
}
/**
* ändert die Reihenfolge analog zu rorderByOffset. sucht jedoch nach dem Wert
* @param $array Array
* @param $startValue Variant
* @return Array oder false
*/
public static function byValue($array, $startValue){
//Schlüssel des Wertes bestimmen
$key = array_search($startValue,$array);
//die reorder-Funktion nach key anwenden
return ($key ===false) ? false : self::byKey($array, $key);
}
}
?>
Nach Index 4:
Array
(
[e] => EE
[f] => FF
[g] => GG
[h] => HH
[a] => AA
[b] => BB
[ c] => CC
[d] => DD
)
Nach Schlüssel f:
Array
(
[f] => FF
[g] => GG
[h] => HH
[a] => AA
[b] => BB
[ c] => CC
[d] => DD
[e] => EE
)
Nach Wert CC:
Array
(
[ c] => CC
[d] => DD
[e] => EE
[f] => FF
[g] => GG
[h] => HH
[a] => AA
[b] => BB
)