• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Array sortieren (sort/asort) - Rüchgabewert 1 ?

Status
Für weitere Antworten geschlossen.

Asipak4You

Mitglied
Hallo,

ich habe folgendes Problem:
Ich bekomme Einen String (z.B. : "a,b,a") über ein Formular und möchte die einzelnen Buchstaben nach jedem Komma trennen.
Das klappt auch:
[php:1:ab299fc9dd]<?php
$string = trim(strtolower($_POST["string"]));
$split = explode(",",$string);
?>[/php:1:ab299fc9dd]
Nun möchte ich das entstandene Array so sortieren, dass dann als zweites Element im Array statt dem "b" , das "a" steht also grob gesagt so:
Array ( [0] => a [1] => a [2] =>b)

Das hab ich versucht so zu lösen:
[php:1:ab299fc9dd]<?php
$csplit = sort($split);
?>[/php:1:ab299fc9dd]
bzw. so:
[php:1:ab299fc9dd]<?php
$csplit = asort($split);
?>[/php:1:ab299fc9dd]
Doch wenn ich das dann ausgeben will mit:
[php:1:ab299fc9dd]<?php
print_r($csplit);
//oder
echo $csplit;
?>[/php:1:ab299fc9dd]
...dann gibt er mir bei beiden Varianten 1 aus.

Kann es sein, dass ich die Funktion zum Sortieren falsch angewendet habe?
Oder muss ich mir das anders ausgeben lassen?
 
Werbung:
Code:
bool asort ( array &array [, int sort_flags] )

wie du siehst hat asort einen boolschen rueckgabe wert. wenn du nun (bool) true ausgibts kriegst du halt ne 1 :)

wo ist dein problem?
 
das ich keine 1 haben will, sondern das, was im Array ist, also als erstes "a", dann "b" usw.
Ist dein geposteter Code ein Hinweis zur Lösung, oder verdeutlichst du mir, wie ich die Funktion einzusetzen habe :?:
 
Werbung:
du hast doch dein array danach sortiert..
[php:1:e9d4eed7a0]
<?php
$array = array(4,5,32,6,1);
asort($array);
print_r($array);
?>
[/php:1:e9d4eed7a0]
 
tut mir leid, ich weiß nicht, was du mir damit sagen willst.
Mein Ergebnis ist vom falschen Typ, soweit klar, aber das was du jetz gepostet hast, ergibt bei mir wieder 1. Wahrscheinlich soll es das auch, ich versteh nur nicht, was das mit meinem Problem zu tun hat, sorry.
Wie kann ich das denn sortieren, damit ich das herausbekomme, was ich wollte, gibt es dafür eine bestimmte Funktion, wenn ja, wäre ich sehr froh darüber, sie kennen zu lernen :wink:
 
tja bei mir kommt
Code:
Array
(
    [4] => 1
    [0] => 4
    [1] => 5
    [3] => 6
    [2] => 32
)
raus wenn ich mein script ausfuehre -> Dein PHP ist wohl kaputt
 
Werbung:
komisch, wenn ich das so mache wie du, kommt das auch raus, nur in meinem ganzen Code muss irgendwo der Fehler stecken. :?

[php:1:04bddf874f]<?php
$string = "a,b,a";

$split = explode(",",$string);
$zahlc = count($split);

if ($zahlc > 1) {
$csplit = array();
$i = 0;
while ($i < $zahlc) {
$element = trim($split[$i]);
$push= array_push($csplit,$element);
$i++;
}
$csplit = asort($csplit);
echo "Suchbegriff: ";
print_r($csplit);
}
?>
[/php:1:04bddf874f]
Hier gibt er mir eins aus, obwohl es doch vom Aufbau genau dasselbe ist, oder sehe ich den Fehler nur nich?
 
$csplit = asort($csplit); < du sortierst das array und ueberschreibst dann $csplit mit true. da kann doch nix bei rauskommen
 
oh ja, wirklich dumm von mir, danke schön :wink:
es muss also einfach nur:
[php:1:91375cd8d7]<?php
$string = "a,b,a";

$split = explode(",",$string);
$zahlc = count($split);

if ($zahlc > 1) {
$csplit = array();
$i = 0;
while ($i < $zahlc) {
$element = trim($split[$i]);
$push= array_push($csplit,$element);
$i++;
}
asort($csplit); //geändert
echo "Suchbegriff: ";
print_r($csplit);
}
?>[/php:1:91375cd8d7]

heißen! Das hatte ich wohl in meinem Buch übersehen, sorry :wink:
 
Werbung:
ja auch wenn ich den sinn fuer das $push nicht sehe geht es so oder?
[ps: du hast schreckliche namen fuer variablen]
 
das mit dem $push ist dafür gedacht, dass die einzelnen Array Elemente einzeln bearbeitet werden und Lehrzeichen am Anfang und am Ende entfernt werden. Dann werden Sie wieder in ein Array gepackt:
[php:1:2874958750]<?php
$csplit = array();
$i = 0;
while ($i < $zahlc) {
$element = trim($split[$i]); // hier werden die Lehrzeichen entfernt
$push= array_push($csplit,$element); // Elemente werden ins Array "$csplit" gepackt
$i++;
}
?>[/php:1:2874958750]
Wenn das einfacher (oder besser) geht, wüsste ichs gern :wink:

Zu den Namen:
Die haben mit noch folgendem Code einen Zusammenhang, aber du hast recht, ich glaube ich werde sie etwas aussagekräftiger machen!
Danke nochmal :wink:
 
du benutzt $push nicht. es ist unnötig und bringt nix . darum geht es
 
Werbung:
$push wäre auch ein boolscher Wert. Wenn die Funktion erfolgreich war, wird TRUE zurückgegeben andernfalls FALSE. Von daher brauchst du $push= gar nicht. Lass es weg.
array_push($csplit,$element); alleine reicht auch schon.
 
achso, jetzt verstehe ich erst was gemeint ist :D
Ihr meint, wenn ich $push weglassen würde, würde dasselbe Ergebnis rauskommen ! Jo, Danke, denselben Fehler hab ich ja auch davor gemacht bei:
Code:
$csplit = asort($csplit);
Ich danke euch für diese Verdeutlichung, jetzt versteh ich erst richtig, was ich da überhaupt gemacht habe :|
 
ist doch auch was schönes :)
jetzt machst du es nie wieder ;)
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben