|
You last visited: Today at 20:08
Advertisement
Einen Unique Array erstellen
Discussion on Einen Unique Array erstellen within the Web Development forum part of the Coders Den category.
04/03/2017, 19:26
|
#1
|
elite*gold: 63
Join Date: Nov 2012
Posts: 2,123
Received Thanks: 500
|
Einen Unique Array erstellen
Guten Abend liebe Community,
derzeitig verzweifle ich an einem relativ simplen Thema. Ich möchte momentan ein Array mit 10 ID's befüllen, welche ich aus meiner Datenbank hole, dies mache ich damit:
PHP Code:
while( $counter <= 10 ) { $blacklist['$counter'] = rand( 1, $max_ids ); $counter += 1; }
Soweit so gut, dies funktioniert auch einwandfrei. Nun kommen auch doppelte ID's vor, was auch vollkommen logisch ist. Jedoch habe ich nun das Problem, das wenn ich die doppelten ID's rauslöschen möchte, dies nicht so funktioniert wie ich möchte. Das rauslöschen versuche ich damit:
PHP Code:
$blacklist = array_unique($blacklist, SORT_NUMERIC);
Aus irgendwelchen, für mich nicht nachvollziehbaren, gründen, kommt hierbei immer wenn ich ausgeben möchte wie viele ID's darin gespeichert werden, der Wert 1 heraus. Die Länge ermittle ich so:
PHP Code:
$length = count($blacklist);
Ich muss ehrlich gestehen, ich bin mit meiner Logik etwas am Ende. Auch wenn es eigentlich ziemlich simple wirkt, komme ich nicht mehr voran.
Also, nochmal alles zusammengefasst, was genau ich machen möchte:
Ich möchte ein Array mit 10 verschiedenen ID's befüllen, hierbei lese ich diese aus einer Datenbank heraus und speichere sie mittels einer Schleife in einem Array. Durch eine Funktion, bzw. eine Logik, möchte ich das die doppelten ID's aus dem Array gelöscht werden und neue ID's hinzugefügt werden, welche es noch nicht im Array gibt. Das soll solange ausgeführt werden, bis die 10 ID's erreicht sind.
Es würde mich wirklich sehr freuen, wenn mir jemand bei diesem kleinen Logik Problem behilflich sein könnte.
Einen schönen Abend noch und ein großes Dankeschön im voraus!
|
|
|
04/03/2017, 21:00
|
#2
|
elite*gold: 0
Join Date: Apr 2010
Posts: 10,289
Received Thanks: 3,613
|
Das könnte daran liegen, das array_unique eine hashmap zurückgibt.
Versuch doch mal mit foreach durch diese zu iterieren.
|
|
|
04/03/2017, 21:09
|
#3
|
elite*gold: 100
Join Date: Apr 2008
Posts: 860
Received Thanks: 1,488
|
Quote:
Originally Posted by Royal*
PHP Code:
while( $counter <= 10 ) { $blacklist['$counter'] = rand( 1, $max_ids ); $counter += 1; }
|
Keine Ahnung ob das schon ein Problem löst, aber hier darfst du keine Single-Quotes benutzen, sonst evaluiert die Variable nicht.
Ansonsten funktioniert dein Beispiel bei mir bestens:
Code:
/home/florian0/test.php:13:
array(11) {
[0] =>
int(5)
[1] =>
int(5)
[2] =>
int(5)
[3] =>
int(3)
[4] =>
int(1)
[5] =>
int(4)
[6] =>
int(4)
[7] =>
int(4)
[8] =>
int(3)
[9] =>
int(5)
[10] =>
int(5)
}
/home/florian0/test.php:13:
int(11)
/home/florian0/test.php:18:
array(4) {
[0] =>
int(5)
[3] =>
int(3)
[4] =>
int(1)
[5] =>
int(4)
}
/home/florian0/test.php:18:
int(4)
Code:
<?php
$max_ids = 5;
$counter = 0;
while( $counter <= 10 ) {
$blacklist[$counter] = rand( 1, $max_ids );
$counter += 1;
}
$length = count($blacklist);
var_dump($blacklist, $length);
$blacklist = array_unique($blacklist, SORT_NUMERIC);
$length = count($blacklist);
var_dump($blacklist, $length);
PS: Die Datenbank kann dir so eine Liste auch erstellen.
Code:
SELECT DISTINCT id
FROM mytable
ORDER BY rand()
LIMIT 10
|
|
|
04/03/2017, 21:23
|
#4
|
elite*gold: 63
Join Date: Nov 2012
Posts: 2,123
Received Thanks: 500
|
Vielen Dank für eure Antworten, aber ich hatte das Problem bereits gelöst, da scheinbar die Variablen doch nicht in den Array gespeichert wurden. Aber trotzdem, vielen Dank für eure Mühen! 
Wünsche euch einen schönen Abend.
|
|
|
04/03/2017, 21:42
|
#5
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by Royal*
Guten Abend liebe Community,
derzeitig verzweifle ich an einem relativ simplen Thema. Ich möchte momentan ein Array mit 10 ID's befüllen, welche ich aus meiner Datenbank hole, dies mache ich damit:
PHP Code:
while( $counter <= 10 ) { $blacklist['$counter'] = rand( 1, $max_ids ); $counter += 1; }
Soweit so gut, dies funktioniert auch einwandfrei. Nun kommen auch doppelte ID's vor, was auch vollkommen logisch ist. Jedoch habe ich nun das Problem, das wenn ich die doppelten ID's rauslöschen möchte, dies nicht so funktioniert wie ich möchte. Das rauslöschen versuche ich damit:
PHP Code:
$blacklist = array_unique($blacklist, SORT_NUMERIC);
Aus irgendwelchen, für mich nicht nachvollziehbaren, gründen, kommt hierbei immer wenn ich ausgeben möchte wie viele ID's darin gespeichert werden, der Wert 1 heraus. Die Länge ermittle ich so:
PHP Code:
$length = count($blacklist);
Ich muss ehrlich gestehen, ich bin mit meiner Logik etwas am Ende. Auch wenn es eigentlich ziemlich simple wirkt, komme ich nicht mehr voran.
Also, nochmal alles zusammengefasst, was genau ich machen möchte:
Ich möchte ein Array mit 10 verschiedenen ID's befüllen, hierbei lese ich diese aus einer Datenbank heraus und speichere sie mittels einer Schleife in einem Array. Durch eine Funktion, bzw. eine Logik, möchte ich das die doppelten ID's aus dem Array gelöscht werden und neue ID's hinzugefügt werden, welche es noch nicht im Array gibt. Das soll solange ausgeführt werden, bis die 10 ID's erreicht sind.
Es würde mich wirklich sehr freuen, wenn mir jemand bei diesem kleinen Logik Problem behilflich sein könnte.
Einen schönen Abend noch und ein großes Dankeschön im voraus!
|
Wenn du eh jede ID nur einmal haben willst wieso hast du an dein SQL dann kein "GROUP BY" dran? (Performanter).
Alternativ kannst könntest du auch $array[$id] = xyz machen, somit würden die ids sich überschreiben. Bevorzuge jedoch GROUP BY oder array_unique.
P.s. wie florian auch schon sagte musst du bei $array["$variable"] doppel-Quotes nutzen, dann aber bitte mit geschweiften Klammern, besser ist jedoch wenn du die Quotes einfach weg lässt.
€: Wieso baust du mit einer While Schleife eine for Schleife (statt diese sofort zu nutzen) ?
Optimal wäre natürlich ein foreach über die Daten die du aus der Datenbank bekommst.
|
|
|
04/03/2017, 21:58
|
#6
|
elite*gold: 63
Join Date: Nov 2012
Posts: 2,123
Received Thanks: 500
|
Quote:
Originally Posted by .ƒaℓsє.
Wenn du eh jede ID nur einmal haben willst wieso hast du an dein SQL dann kein "GROUP BY" dran? (Performanter).
Alternativ kannst könntest du auch $array[$id] = xyz machen, somit würden die ids sich überschreiben. Bevorzuge jedoch GROUP BY oder array_unique.
P.s. wie florian auch schon sagte musst du bei $array["$variable"] doppel-Quotes nutzen, dann aber bitte mit geschweiften Klammern, besser ist jedoch wenn du die Quotes einfach weg lässt.
€: Wieso baust du mit einer While Schleife eine for Schleife (statt diese sofort zu nutzen) ?
Optimal wäre natürlich ein foreach über die Daten die du aus der Datenbank bekommst.
|
Das passiert wenn ich am verzweifeln bin, dann mache ich aus etwas simplen etwas kompliziertes oder unnötiges. Kleine Macke meinerseits.
Bei dem "GROUP BY" kann ich da auch die ID's anhand einer zufälligen Reihenfolge entnehmen?
Grüße
|
|
|
04/03/2017, 23:07
|
#7
|
elite*gold: 0
Join Date: Apr 2011
Posts: 11,115
Received Thanks: 2,436
|
Quote:
Originally Posted by Royal*
Das passiert wenn ich am verzweifeln bin, dann mache ich aus etwas simplen etwas kompliziertes oder unnötiges. Kleine Macke meinerseits.
Bei dem "GROUP BY" kann ich da auch die ID's anhand einer zufälligen Reihenfolge entnehmen?
Grüße
|
"GROUP BY id" sorgt nur dafür das bei den Daten die ausgegeben werden die Ids unique sind und hat keinen Einfluss auf die Sortierung.
|
|
|
 |
Similar Threads
|
2 Diminsonales Array erstellen
07/18/2015 - AutoIt - 6 Replies
Hallo Leute,
kleines Problem beim erstellen eines 2d Arrays:
Folgende aufgabe:
$string ist ein lange kette von zeichen die in 2 teile aufgeteilt wird
in $string1 und $string2
|
Ich suche einen 4story bypass der noch geht um einen Hack zu erstellen
08/27/2012 - 4Story - 15 Replies
Hallo e*pvp comunity,
Ich Suche einen Bypass um für 4story meinen Hack fertig zu stellen, den ich dann auch hier Realisen werde.
Für einen funktionfähigen Bypass gebe ich 200 e*gold, wenn ihr wollt.
Mfg xcyancali
|
[SUCHE]Einen der mir einen Trailer erstellen kann
10/30/2011 - Metin2 Private Server - 2 Replies
Abend com.
Also suche einen der mir einen Trailer erstellen kann, wenn er sehr gut wird bekommt er auch ne 10er psc ;)
Am besten so schnell wie möglich melden ist sehr dringend.
Mit freundlichen Grüßen
|
Gibt es einen service um einen dydns server zu erstellen ??
06/27/2011 - Metin2 - 1 Replies
hey ich wollte mal fragen ob es einen service gibt um einen Dydns server zu erstellen ?? und wenn nicht wie erstellt man einen und bringt ihn zum laufen :confused:
|
Hilfe wie Trainer erstellen mit Bytes of Array ?
10/23/2009 - General Coding - 8 Replies
moin zusammen ich brauche dringend hilfe!!!
Ich spiele ein kleines Flash spiel, dieses möchte ich aber hacken indem ich die werte mit hilfe vonn cheat engine ändere. Die Werte ändern ihr adressen nach jedem spiel neustart daher lohnt es sich nicht so einen trainer zu erstellen.
Ich habe auch schon versucht Pointer zu finden doch leider bin ich da auch nicht fündig geworden.
Habe nur einen Array of Bytes, d.h. wenn ich jetzt nach
AF 03 00 00 F7 0D 00 00 ?? 03
scanne , zeigt mir cheat...
|
All times are GMT +2. The time now is 20:08.
|
|