Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4317 > unrolled thread
| Started by | Jan Novak <repcom@gmail.com> |
|---|---|
| First post | 2017-12-29 08:52 +0100 |
| Last post | 2017-12-31 14:23 +0100 |
| Articles | 6 — 3 participants |
Back to article view | Back to de.comp.lang.php
Array sort Jan Novak <repcom@gmail.com> - 2017-12-29 08:52 +0100
Re: Array sort Gerome Muent <kontakt@bmservices.de> - 2017-12-29 10:07 +0100
Re: Array sort Jan Novak <repcom@gmail.com> - 2017-12-29 15:32 +0100
Re: Array sort "Christoph M. Becker" <cmbecker69@arcor.de> - 2017-12-29 17:40 +0100
Re: Array sort Jan Novak <repcom@gmail.com> - 2017-12-31 13:28 +0100
Re: Array sort "Christoph M. Becker" <cmbecker69@arcor.de> - 2017-12-31 14:23 +0100
| From | Jan Novak <repcom@gmail.com> |
|---|---|
| Date | 2017-12-29 08:52 +0100 |
| Subject | Array sort |
| Message-ID | <p24s8n$tg7$1@news.albasani.net> |
Hallo,
ich habe folgendes Array:
array(25) {
[0]=> array(2) { ["FILE"]=> string(12) "scan0011.pdf" ["PREVIEW"]=>
string(27) "scan0011_owndms_preview.jpg" }
[1]=> array(2) { ["FILE"]=> string(12) "scan0016.pdf" ["PREVIEW"]=>
string(27) "scan0016_owndms_preview.jpg" }
[2]=> array(2) { ["FILE"]=> string(12) "scan0007.pdf" ["PREVIEW"]=>
string(27) "scan0007_owndms_preview.jpg" }
...
}
und möchte es nach dem Key "FILE" sortieren, ohne die Key/Values zu
brechen. Ich habe alle möglichen PHP Funktionen versucht, aber es kommt
immer "1" zurück!?
Jan
[toc] | [next] | [standalone]
| From | Gerome Muent <kontakt@bmservices.de> |
|---|---|
| Date | 2017-12-29 10:07 +0100 |
| Message-ID | <p250kq$h23$1@news.albasani.net> |
| In reply to | #4317 |
Am 29.12.2017 um 08:52 schrieb Jan Novak:
> array(25) {
> [0]=> array(2) { ["FILE"]=> string(12) "scan0011.pdf" ["PREVIEW"]=>
> string(27) "scan0011_owndms_preview.jpg" }
> [1]=> array(2) { ["FILE"]=> string(12) "scan0016.pdf" ["PREVIEW"]=>
> string(27) "scan0016_owndms_preview.jpg" }
> [2]=> array(2) { ["FILE"]=> string(12) "scan0007.pdf" ["PREVIEW"]=>
> string(27) "scan0007_owndms_preview.jpg" }
> ...
> }
Am einfachsten wäre, wenn du die Datenstruktur so veränderst:
> array(25) {
> ["scan0011.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0011.pdf"
["PREVIEW"]=>
> string(27) "scan0011_owndms_preview.jpg" }
> ["scan0016.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0016.pdf"
["PREVIEW"]=>
> string(27) "scan0016_owndms_preview.jpg" }
> ["scan0007.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0007.pdf"
["PREVIEW"]=>
> string(27) "scan0007_owndms_preview.jpg" }
> ...
> }
Sprich, statt der laufenden Indizes den zu sortierenden Index verwenden.
Und dann kannst du einfach nach dem Key sortieren:
ksort($...);
http://php.net/manual/de/function.ksort.php
> und möchte es nach dem Key "FILE" sortieren, ohne die Key/Values zu
> brechen. Ich habe alle möglichen PHP Funktionen versucht, aber es kommt
> immer "1" zurück!?
Das sortiert das Array selber, Rückgabe ist TRUE oder FALSE!
Ansonsten irgendeine Variante von
http://php.net/manual/de/function.array-multisort.php
Aber auch das sortiert das übergebene Array. Rückgabe ist auch da immer
TRUE oder FALSE.
Grüße, Gérôme
>
> Jan
[toc] | [prev] | [next] | [standalone]
| From | Jan Novak <repcom@gmail.com> |
|---|---|
| Date | 2017-12-29 15:32 +0100 |
| Message-ID | <p25jl9$ttd$1@news.albasani.net> |
| In reply to | #4318 |
Am 29.12.2017 um 10:07 schrieb Gerome Muent:
> Am 29.12.2017 um 08:52 schrieb Jan Novak:
>
>
>> array(25) {
>> [0]=> array(2) { ["FILE"]=> string(12) "scan0011.pdf" ["PREVIEW"]=>
>> string(27) "scan0011_owndms_preview.jpg" }
>> [1]=> array(2) { ["FILE"]=> string(12) "scan0016.pdf" ["PREVIEW"]=>
>> string(27) "scan0016_owndms_preview.jpg" }
>> [2]=> array(2) { ["FILE"]=> string(12) "scan0007.pdf" ["PREVIEW"]=>
>> string(27) "scan0007_owndms_preview.jpg" }
>> ...
>> }
>
> Am einfachsten wäre, wenn du die Datenstruktur so veränderst:
> > array(25) {
> > ["scan0011.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0011.pdf"
> ["PREVIEW"]=>
> > string(27) "scan0011_owndms_preview.jpg" }
> > ["scan0016.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0016.pdf"
> ["PREVIEW"]=>
> > string(27) "scan0016_owndms_preview.jpg" }
> > ["scan0007.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0007.pdf"
> ["PREVIEW"]=>
> > string(27) "scan0007_owndms_preview.jpg" }
> > ...
> > }
>
> Sprich, statt der laufenden Indizes den zu sortierenden Index verwenden.
Haben ich gemacht!
> Aber auch das sortiert das übergebene Array. Rückgabe ist auch da immer
> TRUE oder FALSE.
(Hand auf die Stirn Klopf) ooohhhh .... ;-)
Danke !!!
Jan
[toc] | [prev] | [next] | [standalone]
| From | "Christoph M. Becker" <cmbecker69@arcor.de> |
|---|---|
| Date | 2017-12-29 17:40 +0100 |
| Message-ID | <p25r6q$8os$1@solani.org> |
| In reply to | #4319 |
Am 29.12.2017 um 15:32 schrieb Jan Novak:
> Am 29.12.2017 um 10:07 schrieb Gerome Muent:
>
>> Am 29.12.2017 um 08:52 schrieb Jan Novak:
>>
>>> array(25) {
>>> [0]=> array(2) { ["FILE"]=> string(12) "scan0011.pdf" ["PREVIEW"]=>
>>> string(27) "scan0011_owndms_preview.jpg" }
>>> [1]=> array(2) { ["FILE"]=> string(12) "scan0016.pdf" ["PREVIEW"]=>
>>> string(27) "scan0016_owndms_preview.jpg" }
>>> [2]=> array(2) { ["FILE"]=> string(12) "scan0007.pdf" ["PREVIEW"]=>
>>> string(27) "scan0007_owndms_preview.jpg" }
>>> ...
>>> }
>>
>> Am einfachsten wäre, wenn du die Datenstruktur so veränderst:
>> > array(25) {
>> > ["scan0011.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0011.pdf"
>> ["PREVIEW"]=>
>> > string(27) "scan0011_owndms_preview.jpg" }
>> > ["scan0016.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0016.pdf"
>> ["PREVIEW"]=>
>> > string(27) "scan0016_owndms_preview.jpg" }
>> > ["scan0007.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0007.pdf"
>> ["PREVIEW"]=>
>> > string(27) "scan0007_owndms_preview.jpg" }
>> > ...
>> > }
>>
>> Sprich, statt der laufenden Indizes den zu sortierenden Index verwenden.
>
> Haben ich gemacht!
Mögliche Alternative:
usort($array, function ($a, $b) {return $a['FILE'] <=> $b['FILE'];});
--
Christoph M. Becker
[toc] | [prev] | [next] | [standalone]
| From | Jan Novak <repcom@gmail.com> |
|---|---|
| Date | 2017-12-31 13:28 +0100 |
| Message-ID | <p2al59$avj$1@news.albasani.net> |
| In reply to | #4320 |
Am 29.12.2017 um 17:40 schrieb Christoph M. Becker:
>>>> array(25) {
>>>> [0]=> array(2) { ["FILE"]=> string(12) "scan0011.pdf" ["PREVIEW"]=>
>>>> string(27) "scan0011_owndms_preview.jpg" }
>>>> [1]=> array(2) { ["FILE"]=> string(12) "scan0016.pdf" ["PREVIEW"]=>
>>>> string(27) "scan0016_owndms_preview.jpg" }
>>>> [2]=> array(2) { ["FILE"]=> string(12) "scan0007.pdf" ["PREVIEW"]=>
>>>> string(27) "scan0007_owndms_preview.jpg" }
>>>> ...
>>>> }
>>>
>>> Am einfachsten wäre, wenn du die Datenstruktur so veränderst:
>>> > array(25) {
>>> > ["scan0011.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0011.pdf"
>>> ["PREVIEW"]=>
>>> > string(27) "scan0011_owndms_preview.jpg" }
>>> > ["scan0016.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0016.pdf"
>>> ["PREVIEW"]=>
>>> > string(27) "scan0016_owndms_preview.jpg" }
>>> > ["scan0007.pdf"]=> array(2) { ["FILE"]=> string(12) "scan0007.pdf"
>>> ["PREVIEW"]=>
>>> > string(27) "scan0007_owndms_preview.jpg" }
>>> > ...
>>> > }
>>>
>>> Sprich, statt der laufenden Indizes den zu sortierenden Index verwenden.
>>
>> Haben ich gemacht!
>
> Mögliche Alternative:
>
> usort($array, function ($a, $b) {return $a['FILE'] <=> $b['FILE'];});
Interessant...
Mein primäres Problem war, dass ich dachte, die *sort Funktionen geben
das sortierte Array zurück ;-)
Jan
[toc] | [prev] | [next] | [standalone]
| From | "Christoph M. Becker" <cmbecker69@arcor.de> |
|---|---|
| Date | 2017-12-31 14:23 +0100 |
| Message-ID | <p2aocn$dbh$1@solani.org> |
| In reply to | #4321 |
Am 31.12.2017 um 13:28 schrieb Jan Novak:
>
> Am 29.12.2017 um 17:40 schrieb Christoph M. Becker:
>
>> Mögliche Alternative:
>>
>> usort($array, function ($a, $b) {return $a['FILE'] <=> $b['FILE'];});
>
> Interessant...
>
> Mein primäres Problem war, dass ich dachte, die *sort Funktionen geben
> das sortierte Array zurück ;-)
Aus Effizienzgründen werden die per Referenz übergebenen Arrays in-place
sortiert. Will man das, aus welchen Gründen auch immer, nicht, dann kann
man leicht eine eigene Sortierfunktion schreiben, die das übergebene
Array unverändert lässt, und das sortierte Array zurück gibt. Etwa:
<?php
function my_sort($array)
{
$a = $array;
sort($a);
return $a;
}
$a = [2, 3, 1];
var_dump($a, my_sort($a));
--
Christoph M. Becker
[toc] | [prev] | [standalone]
Back to top | Article view | de.comp.lang.php
csiph-web