Antworten auf deine Fragen:
Neues Thema erstellen

Foreach Durchläufe zählen

rey

Der Frager ;)

hi,
ich habe einen Mehrdimensionalen Array.
Nun möchte ich das wenn z.B. Müller zwei mal vorkommt das er mit am ende nur die 2 Liefert.
und nicht die 1 davor .
PHP:
foreach ( $info->Namen as $Name){
	
	$z++;

	$temp2="";
	$temp2.= $Name->Vorname;
	
	
	if($Name->Vorname=="Müller")
	{
		$y++;
		if($y == 1){
			echo "Es gibt nur einen Müller";
		}elseif($y==2)
		{
			echo "Es gibt zwei Müller";
		}elseif ($y ==3)
		{
			echo "Es gibt drei Müller";
		}else
		{
			echo "es gibt keinen Müller";
		}
	}
	
}
so wie der Code jetzt ist schmeißt der mir auch das echo aus der ersten Schleife aus.
aber ich möchte mit dem Endwert weiterarbeiten.
 

Rakete

Nicht mehr ganz neu hier

AW: Foreach Durchläufe zählen

Du musst innerhalb deiner Schleife und dem äußersten if die Variable $y erhöhen und nach der Schleife das Ergebnis abfragen. Dann klappt es mit der Ausgabe.
 

rey

Der Frager ;)

AW: Foreach Durchläufe zählen

Ne das geht nicht

PHP:
foreach ( $info->Namen as $Name){
    
    $z++;

    $temp2="";
    $temp2.= $Name->Vorname;
    
    $y++;
    if($Name->Vorname=="Müller")
    {
        
        if($y == 1){
            echo "Es gibt nur einen Müller";
        }elseif($y==2)
        {
            echo "Es gibt zwei Müller";
        }elseif ($y ==3)
        {
            echo "Es gibt drei Müller";
        }else
        {
            echo "es gibt keinen Müller";
        }
    }
    
}  echo $y;
da gibt er mir den wert für alle Name und nicht gefiltert.
 

Groozzz

Noch nicht viel geschrieben

AW: Foreach Durchläufe zählen

<?

$Namen = array("Name1", "Müller", "Name2", "Name2", "Name2", "Name2", "Mueller", "Name2", "Name2");
$Anzahl = array_count_values($Namen);
foreach($Anzahl as $Schluessel=>$Wert) {

if($Schluessel=="Müller")
{ $wieviel = $Wert; }

}
Echo "Es gibt nur ", 2 ," Müllers";
?>


wolltest du sowas ???
 
K

KackaCS

Guest

AW: Foreach Durchläufe zählen

PHP:
foreach ( $info->Namen as $Name){
    
    $z++;

    $temp2="";
    $temp2.= $Name->Vorname;
    
    
    if($Name->Vorname=="Müller")
    {
        $y++;
    }
    
}

echo "Es gibt ", $y, " Müller.";

Meinst du das?
array_count_values ist natürlich eleganter.
 

rey

Der Frager ;)

AW: Foreach Durchläufe zählen

JA so etwas möchte ich.
Es kommt diese Meldung.
Warning: array_count_values() [function.array-count-values]: Can only count STRING and INTEGER values

So schaut der array aus
das ist das var_dump($info->Eintraege);
array(6) {
[0]=>
object(stdClass)#3 (17) {
["Vorname"]=>
string(12) "Bernd"

["Name"]=>
string(6) "Walter"
["PLZ"]=>
int(11)
["Compass"]=>
string(1) "N"
}
[1]=>
object(stdClass)#4 (17) {
["Vorname"]=>
string(12) "Harry"

["Name"]=>
string(6) "Schmitt"
["PLZ"]=>
int(11)
["Compass"]=>
string(1) "O"
}
[2]=>
object(stdClass)#5 (17) {
["Vorname"]=>
string(11) "Hans"
["Name"]=>
string(6) "Müller"
["PLZ"]=>
int(11)
["Compass"]=>
string(1) "W"
}

und ich habe es nun so gemacht

PHP:
$Namen = array($info->Eintraege);
$Anzahl = array_count_values($Namen);
foreach($Anzahl as $Schluessel=>$Wert) {

	if($Schluessel=="Zerg")
	{ $wieviel = $Wert; }

}
Echo "Es gibt nur ", $wieviel ," Müllers";




@KackaCS

Vielendank das geht einwandfrei.!!!
 
Zuletzt bearbeitet:

rey

Der Frager ;)

AW: Foreach Durchläufe zählen

die Sache ist bloß wenn ich nun noch das ganze sortieren möchte geht es nicht mehr.
z.b.
ich habe 14 müller die ein Berlin wohnen
2 müller die in NRW wohnen
3Schmit die in Bayern wohnen etc.
wenn ich diese dann gruppieren will geht das ganze nicht mehr.
Also z.B.
möchte ich sagen alle die in West deutschland wohnen in eine Gruppe alle die in Süddeutschland wohnen in eine Extra gruppe.
im array ist auch wo diese wohnen westen; süden; norden;osten


weil ich kann im script kein Where bla == blub da es noch nicht in der DB ist
PHP:
foreach ( $info->Namen as $Name){
    
    $z++;

    $temp2="";
    $temp2.= $Name->Vorname."".$Name->Compass; // da geht script nicht mehr da es so nicht mehr nur müller ist das drinnen steht sondern mehr
    
    
    if($Name->Vorname=="Müller" && $Name->Compass=="W")
    {
         $Namen = $Name->Vorname;
         $WO    =$Name->Compass;
        $y++;
    }
    
}

echo "Es gibt ", $y, " Müller.";  

echo "Davon wohnen welche in ", $WO, " D.<br />";

Am besten wäre natürlich wenn man nun sagen können gib mir die Namen der leute die in W wohnen + die anzahl der Menge.
Aber das geht ja leider nicht ;/
höchstens ich gebe noch den Key weiter aber das geht bei der script art nicht oder
da müsste man dann wieder mit einer foreach schleife arbeiten

habe es so versucht

PHP:
if($Name[$i]==True && $Compass[$z]=="W")
	{
	
		$Personen= $pplayer[$i];
                $y++;
...
so wird dann der alte wert überschrieben eigentlich solte es ja alle auflisten auf die es zutrifft.

ich meine eine ifschleife in der alle varianten vorkommen ist alles andere als human :)
 

CIX88

Aktives Mitglied

AW: Foreach Durchläufe zählen

> Aber das geht ja leider nicht ;/
Kommt denn das ganze aus einer DB?
Falls ja, kann man natürlich dort schon gezielt abfragen - z.B. wieviele Müller aus Berlin kommen.

> ich meine eine ifschleife
Es gibt keine IF-Schleifen, IF ist eine Abfrage einer Bedingung.
 

rey

Der Frager ;)

AW: Foreach Durchläufe zählen

1. Nein es wird dort erst noch eingetragen. über ein Formular.
2.JA mir ist klar das if eine Abfrage von Bedingungen ist.

Wie dem auch sei habe es hinbekommen via switch Case welche if Abfragen beinhalten.
uhm.. ich habe nun allerdings in einer Variable drei bis n Namen.
z.b. W = HANS Joerg etc...
wie kann ich diese nun trennen
das ich sage die ersten zeichen bis zum ersten leerzeichen werden in N1 gespeichert.
die darauf folgendne zeichen bis zum nächsten leerzechen werden in N2 gespeichert bis Nn
Also dann wäre das in diesem fall N1=HANS
N2= Joerg
Nn=NAME
ich denke das preg_replace hier richtig ist
 
Zuletzt bearbeitet:

rey

Der Frager ;)

AW: Foreach Durchläufe zählen

weiß ich selbst nicht :)
üben tue ich eigentlich da ich schon länger nichts mehr gemacht habe in php
jedoch geht das nicht komplett mit explode da er nach dem ersten leerzeichen stoppt und nicht weiter macht.
 
Zuletzt bearbeitet:

rey

Der Frager ;)

AW: Foreach Durchläufe zählen

erst einmal müssen Daten in die DB geschrieben werden bis man dies dann mit SQL realisieren kann.

ich habe es so mit explode gemacht
PHP:
davor habe ich einen echo gemacht
und dort stehen die namen so :HANS     Joerg Peter
$NameFeld1= $Namen1;
$NamenFelder= explode(" ", $NameFeld1);
echo "<br />Name1" . $NamenFelder[0]; // Teil1
echo "<br />Name2" . $NamenFelder[1]; // Teil2
echo "<br />Name3" . $NamenFelder[2]; // Teil3
Jedoch zeigt er mir nicht alle an


hm ok nun weiß ich warum er nicht alle angezeigt hat in dem fall wie ich das explode genutzt habe muss ich so viele "echo "<br />Name n" . $NamenFelder[n]; // Teiln
einfügen wie ich im array habe da er sonst nur die anzeigt welche auch der stelle sind also der eine ist an stelle 40 also muss im script auch ...echo "<br />Name40" . $NamenFelder[40]; // Teil3 vorkommen. wie kann ich das ändern?
 
Zuletzt bearbeitet:

r3nt5ch3r

~ Allround pG ~

AW: Foreach Durchläufe zählen

mit ner Schleife durchgehen?!

Kann auch sein, dass ichs falsch verstanden hab - bei deiner Ausdrucksweise^^
 

CIX88

Aktives Mitglied

AW: Foreach Durchläufe zählen

Ich weis nicht ob es mir nur so geht, aber irgendwie sehe ich hier nur Code-Fetzen die ich nicht einordnen kann. Was besagt denn nun der letzte Beitrag mit dem Code ^^^ ???

Ursprünglich ging es doch darum, wieviel Namen aus einer bestimmten Region kommen?
Und sowas löst man über eine SQL-Anweisung - fertig.
 

rey

Der Frager ;)

AW: Foreach Durchläufe zählen

naja ich tue es mit namen nebenher machen um es mir selber auch zu verdeutlichen.
Im eigentlichen geht es um was anderes.
Also ich habe zwei werte die ich aus einer Datei auslese
Spielername und dessen Volkname
PHP:
	case 3:
	//		echo $protoss_Anzahl ."ist 3";
		if ($SpielerRasse1=="Protoss") {
	//			echo $player1."Spieler 1 gehört zu den Protoss";
			$pTemp=$player1;
		}else{
			
		}			if ($SpielerRasse2=="Protoss") {
		//		echo $player2."Spieler 2 gehört zu den Protoss";
			$pTemp2=$player2;
		}else{
			
		}
		if ($SpielerRasse3=="Protoss") {
	//			echo $player3."Spieler 13 gehört zu den Protoss";
			$pTemp3=$player3;
		}else{
			
		}
		if ($SpielerRasse4=="Protoss") {
		//		echo $player4."Spieler 4 gehört zu den Protoss";
			$pTemp4=$player4;
		}else{
			
		}
		if ($SpielerRasse5=="Protoss") {
	//			echo $player5."Spieler 5 gehört zu den Protoss";
			$pTemp5=$player5;
		}else{
			
		}
		if ($SpielerRasse6=="Protoss") {
	//			echo $player6."Spieler 6 gehört zu den Protoss";
			$pTemp6=$player6;
		}else{
			
		}
		$teamp = " ".$pTemp." ".$pTemp2." ".$pTemp3." ".$pTemp4." ".$pTemp5." ".$pTemp6;
		;
		break;

}
nun möchte ich das $teamp auslesen und aufteilen in die eigentlichen werte

ich habe es mit dieser anleitung versucht
PHP:
// Beispiel 1
$pizza  = "Teil1 Teil2 Teil3 Teil4 Teil5 Teil6";
$teile = explode(" ", $pizza);
echo $teile[0]; // Teil1
echo $teile[1]; // Teil2
allerdings geht das die felder der reihe nach durch
das heißt wenn $pTemp6 einen wert hat könnte ich diesen nur auslesen indem ich
$teile[5] ausgebe das würde mir dann aber auch nicht so richtig weiter helfen.
deshalb dachte ich da ich durch den Case fall weiß das es min. und max. 3 Personen sind die dieses Volk haben wollte ich es mit
$teile[0];$teile[1];$teile[3] machen aber wenn eben das feld $pTemp3; leer ist gibt er mir ein leeres aus.
Kurzgesagt dieser weg benötigt das eintragen aller $teile[n]
ich jedoch dachte das er dadurch das ich das explode habe dieses feld für feld durch gehen ignoriert und mir einfach pro teil einen wert aus gibt das heißt
Teil1 voll ist ; Teil2 leer; Teil3 Voll; und teil6 Voll
das es genügt zu schreiben $teile[0];$teile[1];$teile[2] dies ist eben wie gesagt nicht der fall so wie das beispiel geht und ich es verstanden habe müsste ich nun
$teile[0];$teile[2];$teile[5] eintragen um es auslesen zu können.
 

r3nt5ch3r

~ Allround pG ~

AW: Foreach Durchläufe zählen

Habs jetzt 3x gelesen und versteh kein Wort xD

Aber vllt hilft dir das: Du kannst die Keys in Arrays auch mit Strings füllen.
 
Zuletzt bearbeitet:

rey

Der Frager ;)

AW: Foreach Durchläufe zählen

dachte ich mir:)
also noch mal kurz
im Prinzip ist es wie du sagtest ich soll es mit explode machen also habe ich danach gegoogelt und das gefunden
// Beispiel
$pizza = "Teil1 Teil2 Teil3 Teil4 Teil5 Teil6";
$teile = explode(" ", $pizza);
echo $teile[0]; // Teil1
echo $teile[1]; // Teil2

was ja auch auf mein script zutrifft da ich bei wäre es eben $pizza =.$pTemp." ".$pTemp2." ".$pTemp3." ".$pTemp4." ".$pTemp5." ".$pTemp6;

so nun kann es sein dass von der 6 teiligen Pizza nur noch 1 ;2;3 oder gar keins mehr da ist
also nehmen wir an das das erste teil noch da ist das dritte und das fünfte.
da ich nur maximal 3 übrige haben kann dachte ich das ich sagte
$pizza = ...
$teile = explode(" ", $pizza);
echo $teile[0]; //
echo $teile[1]; //
echo $teile[2]; //
um die vorhanden teile auszugeben. so wie dieses script allerdings funktioniert müsste ich wenn nur noch teil1; teil4;teil6 übrig wären folgendes schreiben
echo $teile[0]; //
echo $teile[3]; //
echo $teile[5]; //
verstehste nun?

wenn ich das so realisiere und eine Pizza 1000 Stücke hat und davon nur 3 übrig sind oder 2
z.B. teil 400 teil 332 und teil1 dann müsste ich ja schreiben
echo teile[0] echo teile [331] echo teile[399]

Wenn ich aber einfach nur sage
echo teile[0] //hier steht teil 1 drinnen
echo teile[1]// hier steht teil 332 drinnen
echo teile[2]// hier steht teil 400 drinnen
wäre das viel humaner
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben