Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Count funktion“

rey

Der Frager ;)

hi,
ich möchte für eine spiel wiederholung eine Macro und Micro berechnen der rechnweg für micro lautet
alle aktionen die Minute wo den Namen Select; Move; attack uvm. haben zählen und dann geteilt die Spiellänge.
fürs Macro genauso nur das es dort die aktionen zählt die den namen build; train uvm haben
ich hatte es so versucht
allerdings bekomme ich eine fehlermeldung.
syntax error, unexpected T_STRING
der code
PHP:
$ac = php_bw_get_actions("C:\\xampp\\htdocs\\Repasm\\0397_PZPPTPPPchin-l_llBlAl.rep", "Rey-619", REPASM_ALL_ACTIONS, 10);

$zeit = date("i:s",$ac->Time);
$action = $ac->Name;


 $zaehler = 0;
   $replay_aktion = array();
foreach($ac->Actions as $actions)
{
$zaehler++;
$acts="";
foreach($actions as $aktionen)
{
$zeitpunkt = date("i:s", $aktionen->Time);
$acts=$zeitpunkt." REY MACHTE ZUDERZEIT ::".$aktionen->Name ."<br />";
echo $acts;
//macro berechnen
$macro = count($aktionen->Name Where $aktionen-Name=="train"|| $aktionen=="build")
$gesamtzeit = date("i:s", $info->GameLength);
$macro2 = $macro/$gesamtzeit;
echo "das Macro beträgt:: ".$macro2;
}
}
irgendwelche vorschläge oder ist dies gar nicht umsetzbar?
 

blackout

Schaf im Wolfspelz

AW: Count funktion

Keine Ahnung was du mit der Frage ausdrücken willst, außerdem wird bei der Fehlermeldung sicher ne Zeilenangabe geliefert, wäre schön die zu haben.

Edit: zumindest die Zeile "$macro = count($aktionen->Name Where $aktionen-Name=="train"|| $aktionen=="build")" ist grober Unfug. PHP::count hat nichts mit SQL-COUNT zu tun.
 
Zuletzt bearbeitet:

rey

Der Frager ;)

AW: Count funktion

nunja dann versuche ich es mal ausdrücklicher zu erläutern.
wenn ich mir die funktion ausgeben lasse also echo $acts
dann gibt er mir das aus
TIME :00:00 Aktion ::Select
TIME :00:01 Aktion ::Move
TIME :00:01 Aktion ::Move
TIME :00:01 Aktion ::Select
TIME :00:01 Aktion ::Train
TIME :00:01 Aktion ::Move
TIME :00:01 Aktion ::Move
TIME :00:02 Aktion ::Move
TIME :00:02 Aktion ::Move
TIME :00:02 Aktion ::Move
TIME :00:02 Aktion ::Move
TIME :00:03 Aktion ::Hotkey
....
TIME :10:01 Aktion ::Train
TIME :10:06 Aktion ::Train
TIME :10:11 Aktion ::Train
...
so sollte bei count raus kommen 4 da train 4 mal vorkommt und es kein build gibt wäre dan beispielsweise noch bei einem zeitpunkt build dabei müsste ergebnis 5 sein
ich hoffe nun ist es klarer was ich versuche zu machen


und ja der fehler bezieht sich auf die zeile mit count.....
das es nicht mit der mysql count funktion zu tun hat ist mir bewusst ich hab es einfach mal versucht ;)
PHP:
if($aktionen->Name="train"){
 $train=count ($aktionen->Name);
echo "<br />Rechnung :" .$train;
}else {
echo "<br /> Es wurde nicht einmal Train ausgegeben.";
}


//macro berechnen
/*$macro = count($aktionen->Name Where $aktionen-Name=="train"|| $aktionen=="build")
$gesamtzeit = date("i:s", $info->GameLength);
$macro2 = $macro/$gesamtzeit;
echo "das Macro beträgt:: ".$macro2;*/
}
}
ich habe es nun mit der if schleife versucht aber da kommt das neben jeder zeile Rechnung 1 egal ob train steht oder was anderes
 
Zuletzt bearbeitet:

rey

Der Frager ;)

AW: Count funktion

hm.. ne habs mit versucht aber das ist ja eh ein bissel was anderes als das was ich versuche.
bei ihm ist die array anordnung usw. schon festgelegt.
bei mir zwar auch aber etwas dynamischer
ich habs mit versucht allerdings etwas anderst nun bekomme ich aller dings die fehlermeldung
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\Repasm\details2.php on line 331

Warning: array_count_values() [function.array-count-values]: Can only count STRING and INTEGER values! in C:\xampp\htdocs\Repasm\details2.php on line 333

das script schaut nun so aus
PHP:
$action = php_bw_get_actions("C:\\xampp\\htdocs\\Repasm\\0397_PZPPTPPPchin-l_llBlAl.rep", "Rey-619", REPASM_ALL_ACTIONS, 10);

foreach($action as $Act) 
{

zeile 331     foreach($Act as $Aktionen){
$array = array($Aktionen->Name);
zeile 333    foreach( array_count_values( $array ) as $key=>$keyCount ){
    $strTable .= '  <tr>'.PHP_EOL;
    $strTable .= '    <td>'.$key.' '.$keyCount.'x</td>'.PHP_EOL;
    $strTable .= '  </tr>'.PHP_EOL;
}
print($strTable);

}

}

den fehler habe ich nun behoben aber er zählt eben alles mit 1mal anstatt eben die sachen zu addieren
PHP:
foreach($action->Actions as $Act) 
{

foreach($Act as $Aktionen){

$array = array($Aktionen->Name);


foreach( array_count_values( $array ) as $key=>$keyCount ){
    $strTable .= '  <tr>'.PHP_EOL;
    $strTable .= '    <td>'.$key.' '.$keyCount.'x</td>'.PHP_EOL;
	$strTable .= '  </tr>'.PHP_EOL;
}  
if ($key!="Select" && $key!="Hotkey" && $key!="Attack" && $key!="Set Rally" && $key!="Set" && $key!="Clear Rally" && $key!="Clear" && $key != "Stim" && $key!="Lift" && $key!="Move" && $key!="Burrow" && $key!="Unurrow" && $key!="Hold Position" && $key!="Hold" && $key!="Unload" && $key!="Unload All" && $key!="All" && $key="Siege" && $key!="Unsiege" && $key!="Cloack" && $key!="Decloack" && $key!="Shift Select" && $key!="Shift" && $key!="Deselect" && $key!="Return Cargo" && $key="Return" && $key!="Cargo" && $key!="Arm" && $key!="Comsat Scan" && $key!="Scan" && $key!="Comsat" && $key!="Lay Mine" && $key!="Lay" && $key!="Mine" && $key!="All spells" && $key!="spells") {
	$train = count($key);

	}


}


echo "Jetzt kommen die Aktionen:<br /><pre>";
var_dump($strTable);
echo "</pre>";  

echo"trainingsgesamt".$train;
deshalb habe ich es nochmal mit if versucht aber das haut auch net hin er zählt mir nicht wie oft es train gab wenn es vorgekommen ist
 
Zuletzt bearbeitet:

Top_Gun

Aktives Mitglied

AW: Count funktion

hm.. ne habs mit versucht aber das ist ja eh ein bissel was anderes als das was ich versuche.
bei ihm ist die array anordnung usw. schon festgelegt.
bei mir zwar auch aber etwas dynamischer
Stimmt bei dir ist die Zeit mit drin, deswegen hast du jeden Wert einmal...

Ähm wie wärs mit ner einfachen Schleife:
Für jeden Wert im Array {
if(stristr(Wert, train) {
$count ++;
}
if(stristr(Wert, wasauchimmer) {
$count ++;
}
}

?! Mal so ins unreine gesprochen...
 

rey

Der Frager ;)

AW: Count funktion

uhm hä....
stehe gerade auf der leitung wie soll das mit für jeden wert im array gehen???

uhm das würde dann inen auch mit einer if gehen oder irre ich mich da

also
zeile 343 if(array_search($Aktionen->Name!="Select" && $Aktionen->Name!="Hotkey"...
$count ++;
}
} meinst so?

wenn ja dann geht dies auch nicht es heißt


Warning: Wrong parameter count for array_search() in C:\xampp\htdocs\Repasm\details2.php on line 343

nunja was ich auch noch nicht beachtet habe das es jeweils de aktionen pro minute berechnen soll dann das gesamte / die dauer
ich hatte das script nun so gehalten leider falsches ergebnis
PHP:
$action = php_bw_get_actions("C:\\xampp\\htdocs\\Repasm\\0397_PZPPTPPPchin-l_llBlAl.rep", "Rey-619", REPASM_ALL_ACTIONS, 10);



	
foreach($action->Actions as $Act) 
{

foreach($Act as $Aktionen){


$array = array($Aktionen->Name);

foreach( array_count_values( $array ) as $key=>$keyCount ){

	$strTable .= '  <tr>'.PHP_EOL;
    $strTable .= '    <td>'.$key.'</td>'.PHP_EOL;

	$strTable .= '  </tr>'.PHP_EOL;

if(stristr($key, "Train")) {
$countTrain ++;
}
if(stristr($key, "Cancel Train")) {
$countCancelTrain ++;
}
if(stristr($key, "Hatch")) {
$countHatch ++;
}
if(stristr($key, "Merge Archon")) {
$countMergeArchon ++;
}
if(stristr($key, "Merge Dark Archon ")) {
$countMergeDarkArchon ++;
}
if(stristr($key, "Research")) {
$countResearch ++;
}
if(stristr($key, "Upgrade")) {
$countUpgrade ++;
}
if(stristr($key, "Select Building")) {
$countSelectBuilding ++;
}
if(stristr($key, "HotkeyBuilding")) {
$countHotkeyBuilding ++;
}
if(stristr($key, "Build")) {
$countBuild ++;
}
if(stristr($key, "Morph")) {
$countMorph ++;
}
if(stristr($key, "Warp")) {
$countWarp ++;
}
if(stristr($key, "Evolve")) {
$countEvolve ++;
}
 
}	

 
}  



}


echo "Jetzt kommen die Aktionen:<br /><pre>";
var_dump($action);
echo "</pre>";  
$MacroAktionengesamt=$countTrain+$countCancelTrain+$countHatch+$countMergeArchon+$countMergeDarkArchon+$countResearch+$countUpgrade+$countSelectBuilding+$countHotkeyBuilding+$countBuild+$countMorph+$countWarp+$countEvolve;
$MacroAktionengesamtausgabe= (($MacroAktionengesamt*60)/3600)/$Dauer;
echo"trainingsgesamt".$MacroAktionengesamtausgabe;
 
Zuletzt bearbeitet:
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
175.156
Beiträge
2.581.859
Mitglieder
67.222
Neuestes Mitglied
Gregor
Oben