App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Array sortieren
- Ersteller ghostadmin
- Erstellt am
ghostadmin
Grand Admiral Special
Ich habe in php ein array das ich so erzeugt habe:
exec("/usr/sbin/asterisk -rx 'database show cidname'", $cid);
Da stehen die Daten in der Form drin:
telefonnr1 name1
telefonnr2 name2
Kann man die "Zeilen" auch nach Namen sortieren?
Der normale sort command geht anscheinend nur beim ersten feld (ohne es ausprobiert zu haben).
Ausgeben tue ich das ganze so:
exec("/usr/sbin/asterisk -rx 'database show cidname'", $cid);
Da stehen die Daten in der Form drin:
telefonnr1 name1
telefonnr2 name2
Kann man die "Zeilen" auch nach Namen sortieren?
Der normale sort command geht anscheinend nur beim ersten feld (ohne es ausprobiert zu haben).
Ausgeben tue ich das ganze so:
Code:
$search2 = "/[^0-9]/";
$search3 = "/[0-9]/";
$i = 0;
while ($cid[$i])
{
$cid2 = preg_replace($search2,"",$cid[$i]);
$cid3 = preg_replace($search3,"",$cid[$i]);
if($cid3 != " results found.") {
print "<a href='ctd-form.php?PhoneNumber=$cid2'>$cid2</a>";
} else {
echo $cid2;
}
echo $cid3.'<br>';
$i = $i + 1;
}
Dalai
Grand Admiral Special
- Mitglied seit
- 14.06.2004
- Beiträge
- 7.420
- Renomée
- 262
- Standort
- Meiningen, Thüringen
- Mein Laptop
- Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
- Prozessor
- AMD Ryzen 5 2600 (Pinnacle Ridge)
- Mainboard
- ASUS Prime X370-A
- Kühlung
- Noctua NH-U12S mit 1x NF-F12
- Speicher
- Crucial Ballistix Sport LT weiß (BLS2K8G4D32AESCK): 2x 8 GiB DDR4-3200 (CL16) @ 1,25V
- Grafikprozessor
- Zotac GeForce GTX 1060 6GB AMP Edition
- Display
- Dell U2410, 24 Zoll, IPS, 16:10
- SSD
- Samsung 850 Evo 250 GB
- HDD
- WD40EZRZ (WD Blue) 4000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
- Optisches Laufwerk
- Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
- Soundkarte
- Creative SoundBlaster Audigy 2 ZS PCI
- Gehäuse
- Lian Li PC-8NB Midi-Tower
- Netzteil
- Enermax EMP400AGT MaxPro 400W
- Betriebssystem
- Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
- Webbrowser
- Mozilla Firefox mit diversen Erweiterungen
- Verschiedenes
- 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)
Ich weiß zwar nicht, ob ein Sortieren des Ergebnisses mit PHP schneller ginge oder weniger belastend wäre als die Benutzung einer Pipe, aber sort kann natürlich auch nach anderen Spalten als der ersten sortieren:
MfG Dalai
Wenn du dem Nutzer unterschiedliche Sortiermöglichkeiten bieten willst, wäre wahrscheinlich eine Sortierung direkt in PHP sinnvoller, weil man die Daten nicht erneut holen müsste.sort --help schrieb:-k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)
MfG Dalai
ghostadmin
Grand Admiral Special
Das ganze wird per Browser gesteuert. Wenn der User die Sortierung ändern könnte wäre zwar schön aber wenn es zuviel Aufwand macht, gings auch erstmal ohne.
Wie das mit Pipe geht habe ich keine Ahnung.
Und beim php command gibts solche switches afaik nicht.
Das Problem ist glaube ich das bei dem Array die "Beschriftungen" für Zeilen oder Spalten fehlen.
.
EDIT :
.
Hier das Array von einer ähnlichen Ausgabe:
http://pastebin.com/Mie9LsTU
Also man muss das erstmal separarieren bevor man sortiert.
Ich denke mal ich muss die Variablen $cid2 und $cid3 nehmen und in ein Multi Array stecken, nur wie?
Wie das mit Pipe geht habe ich keine Ahnung.
Und beim php command gibts solche switches afaik nicht.
Das Problem ist glaube ich das bei dem Array die "Beschriftungen" für Zeilen oder Spalten fehlen.
.
EDIT :
.
Hier das Array von einer ähnlichen Ausgabe:
http://pastebin.com/Mie9LsTU
Also man muss das erstmal separarieren bevor man sortiert.
Ich denke mal ich muss die Variablen $cid2 und $cid3 nehmen und in ein Multi Array stecken, nur wie?
ghostadmin
Grand Admiral Special
Weiß das echt niemand?
Man kann ja mit array($cid2,$cid3); ein neues array erzeugen. Und bei der nächsten While Schleife dann array_merge hmmmmm
Man kann ja mit array($cid2,$cid3); ein neues array erzeugen. Und bei der nächsten While Schleife dann array_merge hmmmmm
BoMbY
Grand Admiral Special
- Mitglied seit
- 22.11.2001
- Beiträge
- 7.468
- Renomée
- 293
- Standort
- Aachen
- Prozessor
- Ryzen 3700X
- Mainboard
- Gigabyte X570 Aorus Elite
- Kühlung
- Noctua NH-U12A
- Speicher
- 2x16 GB, G.Skill F4-3200C14D-32GVK @ 3600 16-16-16-32-48-1T
- Grafikprozessor
- RX 5700 XTX
- Display
- Samsung CHG70, 32", 2560x1440@144Hz, FreeSync2
- SSD
- AORUS NVMe Gen4 SSD 2TB, Samsung 960 EVO 1TB, Samsung 840 EVO 1TB, Samsung 850 EVO 512GB
- Optisches Laufwerk
- Sony BD-5300S-0B (eSATA)
- Gehäuse
- Phanteks Evolv ATX
- Netzteil
- Enermax Platimax D.F. 750W
- Betriebssystem
- Windows 10
- Webbrowser
- Firefox
Ich verstehe das Problem im Moment nicht so ganz. Warum nutzt Du nicht zum Beispiel eine der Array-Sortierfunktionen?
ghostadmin
Grand Admiral Special
Weil in dem ursprünglichen Array Telefonnr und Name in einem Datensatz steckt
http://pastebin.com/Mie9LsTU
Mit den Zeilen stecke ich das jeweils in eine Variable die ich ausgegeben habe aber bisher nicht sortierbar waren:
$cid2 = preg_replace($search2,"",$cid[$i]);
$cid3 = preg_replace($search3,"",$cid[$i]);
http://pastebin.com/Mie9LsTU
Mit den Zeilen stecke ich das jeweils in eine Variable die ich ausgegeben habe aber bisher nicht sortierbar waren:
$cid2 = preg_replace($search2,"",$cid[$i]);
$cid3 = preg_replace($search3,"",$cid[$i]);
BoMbY
Grand Admiral Special
- Mitglied seit
- 22.11.2001
- Beiträge
- 7.468
- Renomée
- 293
- Standort
- Aachen
- Prozessor
- Ryzen 3700X
- Mainboard
- Gigabyte X570 Aorus Elite
- Kühlung
- Noctua NH-U12A
- Speicher
- 2x16 GB, G.Skill F4-3200C14D-32GVK @ 3600 16-16-16-32-48-1T
- Grafikprozessor
- RX 5700 XTX
- Display
- Samsung CHG70, 32", 2560x1440@144Hz, FreeSync2
- SSD
- AORUS NVMe Gen4 SSD 2TB, Samsung 960 EVO 1TB, Samsung 840 EVO 1TB, Samsung 850 EVO 512GB
- Optisches Laufwerk
- Sony BD-5300S-0B (eSATA)
- Gehäuse
- Phanteks Evolv ATX
- Netzteil
- Enermax Platimax D.F. 750W
- Betriebssystem
- Windows 10
- Webbrowser
- Firefox
Naja, ich würde dann vielleicht zweistufig da heran gehen. Zuerst die Ausgabe in einer Schleife in einen tabellenartigen Array parsen, und dann hinterher einfach den entsprechenden Sort drüber laufen lassen.
Oder sonst einfach als CSS/Javascript sortierbare Tabelle ausgeben?
Edit: Oder eben einen usort mit benutzerdefinierter Vergleichsfunktion.
Oder sonst einfach als CSS/Javascript sortierbare Tabelle ausgeben?
Edit: Oder eben einen usort mit benutzerdefinierter Vergleichsfunktion.
ghostadmin
Grand Admiral Special
die Ausgabe in einer Schleife in einen tabellenartigen Array parsen
genau daran scheitere ich ja schon
ich hatte es so in der Art in der While Schleife:
$cidnew2 = $cidnew; <- um den Wert aus der vorherigen while schleife nicht zu verlieren
$cidnew = array($cid2,$cid3); <- beide variablen in array speichern
$cidnew = array_merge($cidnew,$cidnew2); <- neues array und vorheriges array zusammenfügen
Zuletzt bearbeitet:
BoMbY
Grand Admiral Special
- Mitglied seit
- 22.11.2001
- Beiträge
- 7.468
- Renomée
- 293
- Standort
- Aachen
- Prozessor
- Ryzen 3700X
- Mainboard
- Gigabyte X570 Aorus Elite
- Kühlung
- Noctua NH-U12A
- Speicher
- 2x16 GB, G.Skill F4-3200C14D-32GVK @ 3600 16-16-16-32-48-1T
- Grafikprozessor
- RX 5700 XTX
- Display
- Samsung CHG70, 32", 2560x1440@144Hz, FreeSync2
- SSD
- AORUS NVMe Gen4 SSD 2TB, Samsung 960 EVO 1TB, Samsung 840 EVO 1TB, Samsung 850 EVO 512GB
- Optisches Laufwerk
- Sony BD-5300S-0B (eSATA)
- Gehäuse
- Phanteks Evolv ATX
- Netzteil
- Enermax Platimax D.F. 750W
- Betriebssystem
- Windows 10
- Webbrowser
- Firefox
Sollte das nicht auch in etwa einfach so funktionieren (nicht getestet):
?
PHP:
$search2 = "/[^0-9]/";
$search3 = "/[0-9]/";
$cid_neu = array();
foreach($cid as $key => $value)
{
$cid_neu[$key]['nummer'] = preg_replace($search2, "", $value);
$cid_neu[$key]['name'] = preg_replace($search3, "", $value);
}
usort($cid_neu, "cmp_name");
function cmp_name($a, $b)
{
return strcmp($a['name'], $b['name']);
}
?
Zuletzt bearbeitet:
ghostadmin
Grand Admiral Special
$cid_neu = array();
fehlt da nicht noch der name vom array?
fehlt da nicht noch der name vom array?
ghostadmin
Grand Admiral Special
Also dein Code gibt mir schon mal ein Array aus
Nur sortiert wird nichts.
Nur sortiert wird nichts.
Zuletzt bearbeitet:
BoMbY
Grand Admiral Special
- Mitglied seit
- 22.11.2001
- Beiträge
- 7.468
- Renomée
- 293
- Standort
- Aachen
- Prozessor
- Ryzen 3700X
- Mainboard
- Gigabyte X570 Aorus Elite
- Kühlung
- Noctua NH-U12A
- Speicher
- 2x16 GB, G.Skill F4-3200C14D-32GVK @ 3600 16-16-16-32-48-1T
- Grafikprozessor
- RX 5700 XTX
- Display
- Samsung CHG70, 32", 2560x1440@144Hz, FreeSync2
- SSD
- AORUS NVMe Gen4 SSD 2TB, Samsung 960 EVO 1TB, Samsung 840 EVO 1TB, Samsung 850 EVO 512GB
- Optisches Laufwerk
- Sony BD-5300S-0B (eSATA)
- Gehäuse
- Phanteks Evolv ATX
- Netzteil
- Enermax Platimax D.F. 750W
- Betriebssystem
- Windows 10
- Webbrowser
- Firefox
Hm ja, keine Ahnung - eigentlich müsste das irgendwie so funktionieren. Ich werde aber leider heute wohl nicht dazu kommen, das selbst mal auszuprobieren (keinen Zugriff auf eine PHP-Umgebung im Moment).
ghostadmin
Grand Admiral Special
Das in Beispiel3 klappt auch nicht
http://php.net/manual/de/function.array-multisort.php
Da wird dann einfach nur die komplette Liste umgedreht wenn man z.B. name nach DESC macht
http://php.net/manual/de/function.array-multisort.php
Da wird dann einfach nur die komplette Liste umgedreht wenn man z.B. name nach DESC macht
Code:
<?php
$search = array("[0;37m","[0m","/cidname/",":");
$search2 = "/[^0-9]/";
$search3 = "/[0-9]/";
set_time_limit(5);
unset($cid);
exec("/usr/sbin/asterisk -rx 'database show cidname'", $cid);
$cid = str_replace($search,"",$cid);
# create new array cid_new and put cid values into
$cid_new = array();
foreach($cid as $key => $value)
{
$cid_new[$key]['number'] = preg_replace($search2, "", $value);
$cid_new[$key]['name'] = preg_replace($search3, "", $value);
}
#usort($cid_new, "cmp_name");
#function cmp_name ($a, $b)
#{
#return strcmp($a['name'], $b['name']);
#}
#sort multi array
foreach ($cid_new as $key => $row) {
$snumber[$key] = $row['number'];
$sname[$key] = $row['name'];
}
array_multisort($sname, SORT_DESC, $snumber, SORT_DESC, $cid_new);
#output array
foreach($cid_new as $key => $value) {
print $cid_new[$key]['name']." ";
print $cid_new[$key]['number']."<br />";
}
?>
Zuletzt bearbeitet:
ghostadmin
Grand Admiral Special
Also die Strings hatten alle ein Leerzeichen. Also statt "Name" stand " Name". Als ich die Leerzeichen entfernt habe, hat es korrekt sortiert.
Der Grund war, es war nicht nur ein Leerzeichen davor (sondern verschieden viele) und der Dump hat dies nicht angezeigt, der zeigt nur ein Leerzeichen. Und die Anzahl der Leerzeichen war auch verschieden zwischen den Zeilen, deswegen hatte es so seltsam sortiert.
Der Grund war, es war nicht nur ein Leerzeichen davor (sondern verschieden viele) und der Dump hat dies nicht angezeigt, der zeigt nur ein Leerzeichen. Und die Anzahl der Leerzeichen war auch verschieden zwischen den Zeilen, deswegen hatte es so seltsam sortiert.
Zuletzt bearbeitet:
BoMbY
Grand Admiral Special
- Mitglied seit
- 22.11.2001
- Beiträge
- 7.468
- Renomée
- 293
- Standort
- Aachen
- Prozessor
- Ryzen 3700X
- Mainboard
- Gigabyte X570 Aorus Elite
- Kühlung
- Noctua NH-U12A
- Speicher
- 2x16 GB, G.Skill F4-3200C14D-32GVK @ 3600 16-16-16-32-48-1T
- Grafikprozessor
- RX 5700 XTX
- Display
- Samsung CHG70, 32", 2560x1440@144Hz, FreeSync2
- SSD
- AORUS NVMe Gen4 SSD 2TB, Samsung 960 EVO 1TB, Samsung 840 EVO 1TB, Samsung 850 EVO 512GB
- Optisches Laufwerk
- Sony BD-5300S-0B (eSATA)
- Gehäuse
- Phanteks Evolv ATX
- Netzteil
- Enermax Platimax D.F. 750W
- Betriebssystem
- Windows 10
- Webbrowser
- Firefox
Ahh super - freut mich, dass es doch noch geht.
Ein kleiner Änderungsvorschlag:
$row enthält ja schon eine vollständige Zeile des Array, und einen Schlüssel brauchst Du nicht.
Ein kleiner Änderungsvorschlag:
PHP:
#output array
foreach($cid_new as $row) {
print $row['name']." ";
print $row['number']."<br />";
}
$row enthält ja schon eine vollständige Zeile des Array, und einen Schlüssel brauchst Du nicht.
ghostadmin
Grand Admiral Special
Wäre es wohl schwer wenn man eine Liste von Anrufern mit Telefonnummern hat die aus einem CSV generiert wurden und man möchte dann automatisch einen Lookup machen, wem die Telefonnummer gehört? Das heisst es soll dann nicht nur die Nummer angezeigt werden, sondern auch der Name.
Für die Anrufe habe ich einen Code in Perl der das ganze in ein Array steckt:
web.archive.org/web/20061013071611/www.3ait.co.uk/~jon/cdr-info.pls
Die Nummern stecken alle in $cdrentry[1]
Der Code von oben ist ja nur das Telefonbuch alleine.
Edit: Schon fertig, ist ja einfacher als ich dachte
Für die Anrufe habe ich einen Code in Perl der das ganze in ein Array steckt:
web.archive.org/web/20061013071611/www.3ait.co.uk/~jon/cdr-info.pls
Die Nummern stecken alle in $cdrentry[1]
Der Code von oben ist ja nur das Telefonbuch alleine.
Edit: Schon fertig, ist ja einfacher als ich dachte
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 4K