Antworten auf deine Fragen:
Neues Thema erstellen

foreach einträge zählen

rey

Der Frager ;)

Hi,
ich habe einen Array mit den Parametern Name;Time und Params
ich greife auf den Array mit einer foreach schleife zu und möchte das es mir die gesamt anzahl der Einträge ausgibt.
also nicht der reihe nach Eintrag ==>1 etc sondern alle zusammenaddieren
zur Veranschaulichung so schaut das Array Beispielsweise aus
object(stdClass)#1 (3) {
["ErrorCode"]=>
int(0)
["ErrorString"]=>
string(2) "OK"
["Actions"]=>
array(37) {
[0]=>
array(1) {
[0]=>
object(stdClass)#2 (3) {
["Name"]=>
string(5) "Build"
["Time"]=>
int(59)
["Params"]=>
string(20) "Warp,(111,113),Pylon"
}
}
[1]=>
array(1) {
[0]=>
object(stdClass)#3 (3) {
["Name"]=>
string(5) "Build"
["Time"]=>
int(97)
["Params"]=>
string(22) "Warp,(107,112),Gateway"
}


das ist mein code
PHP:
    foreach($action->Actions as $actions)
   
           {
               foreach($actions as $eintraegeBuild)
               { 
               $bla=$eintraegeBuild->Name;
               echo "<br />".$bla;
      if($bla="build")
      {
 $buildcount= count($bla);
 echo "<br />BUILD AKTIONEN ZAHL BETRÄGT::::".$buildcount;
 echo"<br  />";
      }   
            }
                   
           }
so wie der code jetzt ist bekomme ich das
Build
BUILD AKTIONEN ZAHL BETRÄGT::::1

Build
BUILD AKTIONEN ZAHL BETRÄGT::::1

Build
BUILD AKTIONEN ZAHL BETRÄGT::::1
in diesem fall sollte es diese aber addieren und somit das Ergebnis 3 einmal liefern
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: foreach einträge zählen

$actions->Name ist kein Array, sondern ein Array-Eintrag. Das wirft dir wohl den Fehler.
Und wenn du nur die Einträge im Array zählen willst, warum nicht einfach count($action->Actions)?


Duddle
 

rey

Der Frager ;)

AW: foreach einträge zählen

weil ich verschiedene Params Einträge beachten muss
so wie es jetzt ist zählt er die alle als eins jeweils
als als bsp.
["Name"]=>
string(5) "Build"
["Time"]=>
int(488)
["Params"]=>
string(31) "Warp,(111,117),Cybernetics Core"

das wird als ein Eintrag gewertet obwohl bei Params zwei Einträge sind das muss berücksichtigt werden
somit wäre dieser eine build Eintrag nicht 1 sondern 2
was ich noch nicht ausprobiert habe ist ob ich in diesem fall sagen kann
if Params>0
dann count Params

ok das geht schon mal nicht ich denke mal weil es mit einem Komma getrennt ist.
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: foreach einträge zählen

Code:
["Name"]=>
string(5) "Build"
["Time"]=>
int(48
["Params"]=>
string(31) "Warp,(111,117),Cybernetics Core"

Wo sind da bei Params 2 Werte?
Wenn du einen größeren Datensatz mal hier reinwerfen würdest und genau erzählst, was du davon wie zusammengefasst zählen willst, wäre deine Frage einfacher zu beantworten.


Duddle
 

rey

Der Frager ;)

AW: foreach einträge zählen

[51]=>
array(1) {
[0]=>
object(stdClass)#174 (3) {
["Name"]=>
string(5) "Build"
["Time"]=>
int(59)
["Params"]=>
string(20) "Warp,(111,113),Pylon"
}
}
..
[72]=>
array(1) {
[0]=>
object(stdClass)#229 (3) {
["Name"]=>
string(5) "Build"
["Time"]=>
int(97)
["Params"]=>
string(22) "Warp,(107,112),Gateway"
}
}
...
[1]=>
object(stdClass)#238 (3) {
["Name"]=>
string(5) "Train"
["Time"]=>
int(100)
["Params"]=>
string(5) "Probe"
}
...
[85]=>
array(1) {
[0]=>
object(stdClass)#268 (3) {
["Name"]=>
string(5) "Build"
["Time"]=>
int(115)
["Params"]=>
string(22) "Warp,(108,109),Gateway"
}
}
ich möchte alle werte zusammen addieren welche bein Name entweder build heißt und die wo Name = Train ist

wenn bei Name Build steht muss noch überprüft werden ob Params ==> Warp oder Hatch ist
bei Train ist es egal was bei Params steht
und am ende die ganzen build addieren und die Train die beiden Ergebnisse wiederum am ende zusammen rechnen, diese bilden dann das Gesamt Resultat
ich möchte das umsetzen

einmal micro einmal marco
ich hoffe nun ist es verständlicher
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: foreach einträge zählen

Ohne jegliche Fehlerkorrektur geschrieben und nicht getestet würde ich es wohl quick&dirty so schreiben:
PHP:
<?php
$zaehler = array("Build" => array("Warp" => 0, "Hatch" => 0), 
		 "Train" => 0);
foreach($action->Actions as $act) {
	$name = $act->Name;
	switch($name) {
	case "Build":
		$param = explode(",",$act->Params);
		$zaehler[$name][$param[0]]++;
		break;
	default:
		$zaehler[$name]++;
	}
}
?>


Duddle
 

rey

Der Frager ;)

AW: foreach einträge zählen

Danke
jedoch geht es nicht ;) kommen zumindest komische Werte raus.
1

2

6

7

4

5

4

5

6

7

8

3

4

5

6

7

8

9

9

10

11

10

12

13

14

15

11

12

13

14

8

16

9
ich habe die aushabe so gemacht
PHP:
   $anz1 = $zaehler[$name][$param[0]]++;
               echo      "<pre> ".$anz1 ."</pre>";
beim default fall das gleiche nur mit $anz2
Werde es weiter versuchen vielleicht finde ich ja den Fehler
 

Duddle

Posting-Frequenz: 14µHz

AW: foreach einträge zählen

Warum willst du das zwischendurch ausgeben lassen... egal.
Was sagt denn ein
PHP:
echo "<pre>".print_r($zaehler)."</pre>";
nachdem die Schleife komplett durchgelaufen ist?

Hab es grad mal bei mir (statt mit einem Objekt mit einem normalen Array) probiert und da funktioniert obiger Code wie er sollte.

Duddle
 
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

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben