php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 21-08-2007, 17:50
fab_k
 Newbie
Links : Onlinestatus : fab_k ist offline
Registriert seit: Aug 2004
Beiträge: 51
fab_k ist zur Zeit noch ein unbeschriebenes Blatt
Standard array_unique()

Hallo Forum,

die Funktion array_unique() gibt mir gerade ein Rätsel auf.
Ich rufe aus meiner (MySQL)Datenbank PLZ-Felder ab.
Aus der Abfrage übergebe ich die ersten zwei Ziffern an ein Array:

PHP-Code:
$finder_plz mysql_query ("SELECT plz FROM agenturen ORDER BY plz");

$plz = array();

while(
$zeile mysql_fetch_array($finder_plz)) {

if(
$zeile["plz"] != "") { $plz[] = substr($zeile["plz"],0,2); }} 
Wenn ich das ausgebe mit:

PHP-Code:
for($p=0$p count($plz); $p++) {

echo 
$plz[$p]."<br />"; } 
... funktioniert das wie gewünscht, die Ausgabe:

10
10
12
22
22
50

Jetzt möchte ich jedoch doppelte Array-Einträge entfernen und füge unmittelbar vor die for-Schleife ein:

PHP-Code:
$plz array_unique($plz); 
Und nun kann ich die Ausgabe nicht mehr nachvollziehen:

10

12
22

Die 50 wird gelöscht (?), zudem eine Leerzeile eingefügt.

Weiß jemand, wie so etwas zustande kommt?

Vielen Dank
Fabian Klein
Mit Zitat antworten
  #2 (permalink)  
Alt 21-08-2007, 17:57
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

warum nicht SELECT DISTINCT?
Mit Zitat antworten
  #3 (permalink)  
Alt 21-08-2007, 18:12
fab_k
 Newbie
Links : Onlinestatus : fab_k ist offline
Registriert seit: Aug 2004
Beiträge: 51
fab_k ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo, danke für die Antwort.

Also aus meiner Sicht (kann mich aber täuschen) sollte es unerheblich sein, ob ich DISTINCT mache oder nicht. Die PLZ-Zahlen sind 5-stellig in der DB.

Das beste wäre natürlich, wenn ich so etwas (in der Art) machen könnte, habe aber nichts gefunden:

SELECT DISTINCT LEFT(plz,2) FROM...

Danke & Gruß
Fabian
Mit Zitat antworten
  #4 (permalink)  
Alt 21-08-2007, 18:24
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von fab_k
Das beste wäre natürlich, wenn ich so etwas (in der Art) machen könnte, habe aber nichts gefunden:

SELECT DISTINCT LEFT(plz,2) FROM...
Hast du das vielleicht auch mal einfach ausprobiert?...

Ansonsten kann man auch GROUP BY verwenden
Mit Zitat antworten
  #5 (permalink)  
Alt 21-08-2007, 18:30
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Fab
Den Leerstring hast du selber eingefügt. Ein error_reporting(E_ALL) hätte dich darauf aufmerksam gemacht, dass du auf nicht exisiterende Array Elemente zugreifen willst.
Und die 50 wird imho nicht gelöscht, sondern die for Schleife ist nicht geeignet für ein solches Array. Hast du es mal mit foreach() probiert ? Resp wäre es in einem solchen Falle besser ein var_dump() zum prüfen zu verwenden.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #6 (permalink)  
Alt 21-08-2007, 18:56
fab_k
 Newbie
Links : Onlinestatus : fab_k ist offline
Registriert seit: Aug 2004
Beiträge: 51
fab_k ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo,

@ghostgambler:

Danke Dir, das habe ich ausprobiert, da hatte ich aber nichts von der DB erhalten...

@jahlives:

Unglaublich... mit foreach klappt es...:

PHP-Code:
$finder_plz mysql_query ("SELECT plz FROM agenturen ORDER BY plz");

$plz = array();

while(
$zeile mysql_fetch_array($finder_plz)) {

if(
$zeile["plz"] != "") { $plz[] = substr($zeile["plz"],0,2); }}

$plz array_unique($plz);

foreach (
$plz as $plz_neu) {

echo 
$plz_neu."<br />"; } 
Finde das erstaunlich, weil PHP ja sonst so "tolerant" ist...

Vielen Dank!

Gruß
Fabian
Mit Zitat antworten
  #7 (permalink)  
Alt 21-08-2007, 19:06
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Finde das erstaunlich, weil PHP ja sonst so "tolerant" ist...
PHP ist auch tolerant und gerade deswegen wird der Code ausgeführt. Eine "richtige" Programmiersprache hätte dich nicht einmal kompilieren lassen. Hast du dir mal die Keys des Arrays nach array_unique() angeschaut ? Für mich sprechen diese Keys gerade für die Toleranz von PHP
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #8 (permalink)  
Alt 21-08-2007, 20:58
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es macht trotzdem keinen Sinn etwas in php zu machen, was die DB genauso gut kann...
Probier halt ein wenig mit der Syntax rum - mMn funktioniert es sowohl mit DISTINCT, wie auch mit GROUP BY
Mit Zitat antworten
  #9 (permalink)  
Alt 22-08-2007, 01:33
fab_k
 Newbie
Links : Onlinestatus : fab_k ist offline
Registriert seit: Aug 2004
Beiträge: 51
fab_k ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo ghostgambler,

Du hast Recht!

Ich hatte eine Weile nach der passenden Query gesucht und irgendwie nichts gefunden

Dann dachte ich, dass es eine solche Abfrage gar nicht gäbe und habe mich dem PHP zugewandt.

Habe noch etwas probiert, wie Du vorgeschlagen hast, jedoch kenne ich nicht so gut die Möglichkeiten von SQL.

Werde aber jeden Tipp diesbezüglich umsetzen...

Vielen Dank
Fabian
Mit Zitat antworten
  #10 (permalink)  
Alt 22-08-2007, 01:53
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zeig mal deinen versuch mit select distinct left..
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:44 Uhr.