Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „array Problem“

rey

Der Frager ;)

Problem mit dem auslesen eines Dimensionalen Arrays

hi,
ich habe mal wieder ein kleines Problem ;)
und zwar möchte ich eien Auflistung alle gemachten Aktionen die ein Spieler gemacht hat nach einer bestimmten sache durchsuchen. Wenn diese auftaucht soll hinter dem Namen in rot "This Player Hacked in the Game :/"
wenn es aber nicht bei dem Spieler auftaucht dann steht nichts dahinter das bedeutet der spieler hat nicht gecheatet.
und die Aktionen Prüfung für jeden Spieler.

stdClass Object
(
...
[Actions] => Array
(
[0] => Array
(
...
[3] => stdClass Object
(
[Name] => Attack
[Time] => 0
[Params] => (0,0),3594,228,
)

...
ich habe es hinbekommen leider gibt es ein Problem mit der foreach schleife
$action = php_bw_get_actions("0340 SsP)fi SsP)cR SsP)bA H.rep", $player->Name, REPASM_ALL_ACTIONS, 1);
foreach($action->Actions[0] as $aktion){
weil die foreach schleife in diese foreach($info->Players as $player) rein machen muss damit es die Spielernamen durch geht und nach der aktion prüft das Problem ist dann bloß das es so ausschaut
TEAM1
SsP)cRaCkLiNg((Brown)145APM
SsP)cRaCkLiNg((Brown)145APM
SsP)cRaCkLiNg((Brown)145APM
SsP)cRaCkLiNg((Brown)145APM
SsP)cRaCkLiNg((Brown)145APM
SsP)cRaCkLiNg((Brown)145APM
SsP)cRaCkLiNg((Brown)145APM
SsP)bAtTLe((Blue)134APM
SsP)bAtTLe((Blue)134APM
SsP)bAtTLe((Blue)134APM
SsP)bAtTLe((Blue)134APMWhat a shame the Player was a hacker :(
SsP)bAtTLe((Blue)134APM
SsP)bAtTLe((Blue)134APMWhat a shame the Player was a hacker :(
SsP)bAtTLe((Blue)134APM
SsP)bAtTLe((Blue)134APMWhat a shame the Player was a hacker :(
SsP)bAtTLe((Blue)134APM
SsP)bAtTLe((Blue)134APMWhat a shame the Player was a hacker :(

PHP:
if($info->Teams !=false){
  $i = 0;
        $replay_team = array();
        foreach($info->Teams as $team)

        {
           $i ++;
          $temp="";		 
	
          foreach($info->Players as $player)
          {	   $action =	php_bw_get_actions("0340 SsP)fi SsP)cR SsP)bA H.rep", $player->Name, REPASM_ALL_ACTIONS, 1);
		  		foreach($action->Actions[0] as $aktion){
		
            if (in_array($player->Name,$team,$aktion))
            {
/*                 $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i>".$aktion->Name."<br>";*/
				if($aktion->Name=='Attack'){
					 $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><font style='color:#ff0000'>What a shame the Player was a hacker :(</font><br>";
		}else{
		 $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><br>";
		}
				
				
				           $replay_team[$i]=$temp;
		$TeamA = $replay_team[0];
		$TeamB = $replay_team[1];
	
            }
           }
}
      }
      } 
	  	echo $TeamB;
 
Zuletzt bearbeitet:

gp812

Newbster

AW: array Problem

PHP:
$action =    php_bw_get_actions("0340 SsP)fi SsP)cR SsP)bA H.rep", $player->Name, REPASM_ALL_ACTIONS, 1);
                  foreach($action->Actions[0] as $aktion){

Das Teil verstehe ich nicht ganz.
Kannst du da mal print_r($action) einbauen? Und ergebniss poasten.
 

rey

Der Frager ;)

AW: array Problem

das Ergebnis ist sehr lange ;)
stdClass Object
(
[ErrorCode] => 0
[ErrorString] => OK
[Actions] => Array
(
[0] => Array
(
[0] => stdClass Object
(
[Name] => Select
[Time] => 0
[Params] => 3251
)

[1] => stdClass Object
(
[Name] => Train
[Time] => 0
[Params] => Probe
)

[2] => stdClass Object
(
[Name] => Select
[Time] => 0
[Params] => 3247
)

[3] => stdClass Object
(
[Name] => Attack
[Time] => 0
[Params] => (0,0),3594,228,
)

[4] => stdClass Object
(
[Name] => Select
[Time] => 0
[Params] => 3248
)

[5] => stdClass Object
(
[Name] => Attack
[Time] => 0
[Params] => (0,0),3595,228,
)

[6] => stdClass Object
(
[Name] => Select
[Time] => 0
[Params] => 3249
)

[7] => stdClass Object
(
[Name] => Attack
[Time] => 0
[Params] => (0,0),3596,228,
)

[8] => stdClass Object
(
[Name] => Select
[Time] => 0
[Params] => 3250
)

[9] => stdClass Object
(
[Name] => Attack
[Time] => 0
[Params] => (0,0),3597,228,
)

)

[1] => Array
(
[0] => stdClass Object
(
[Name] => Select
[Time] => 1
[Params] => 3251
)

)

[2] => Array
(
[0] => stdClass Object
(
[Name] => Ally
[Time] => 9
[Params] => 2A 02 80 00
)

[1] => stdClass Object
(
[Name] => Vision
[Time] => 9
[Params] => 17 00
)

[2] => stdClass Object
(
[Name] => Train
[Time] => 10
[Params] => Probe
)

)

[3] => Array
(
[0] => stdClass Object
(
[Name] => Train
[Time] => 10
[Params] => Probe
)

)

[4] => Array
(
[0] => stdClass Object
(
[Name] => Train
[Time] => 12
[Params] => Probe
)

[1] => stdClass Object
(
[Name] => Train
[Time] => 12
[Params] => Probe
)

[2] => stdClass Object
(
[Name] => Train
[Time] => 12
[Params] => Probe
)

[3] => stdClass Object
(
[Name] => Train
[Time] => 13
[Params] => Probe
)

[4] => stdClass Object
(
[Name] => Select
[Time] => 13
[Params] => 3235
)

[5] => stdClass Object
(
[Name] => Attack
[Time] => 13
[Params] => (0,0),3598,228,
)

[6] => stdClass Object
(
[Name] => Select
[Time] => 13
[Params] => 3251
)

)

[5] => Array
(
[0] => stdClass Object
(
[Name] => Train
[Time] => 18
[Params] => Probe
)

)

[6] => Array
(
[0] => stdClass Object
(
[Name] => Train
[Time] => 19
[Params] => Probe
)

[1] => stdClass Object
(
[Name] => Train
[Time] => 20
[Params] => Probe
)

)

[7] => Array
(
[0] => stdClass Object
(
[Name] => Select
[Time] => 26
[Params] => 3232
)

[1] => stdClass Object
(
[Name] => Attack
[Time] => 26
[Params] => (0,0),3599,228,
)

[2] => stdClass Object
(
[Name] => Select
[Time] => 26
[Params] => 3251
)

)

[8] => Array
(
[0] => stdClass Object
(
[Name] => Train
[Time] => 27
[Params] => Probe
)

)

[9] => Array
(
[0] => stdClass Object
(
[Name] => Ally
[Time] => 29
[Params] => 2A 02 80 00
)

[1] => stdClass Object
(
[Name] => Vision
[Time] => 29
[Params] => 17 00
)

)

[10] => Array
(
[0] => stdClass Object
(
[Name] => Select
[Time] => 38
[Params] => 3231
)

[1] => stdClass Object
(
[Name] => Attack
[Time] => 38
[Params] => (0,0),3600,228,
)

[2] => stdClass Object
(
[Name] => Select
[Time] => 38
[Params] => 3251
)

[3] => stdClass Object
(
[Name] => Select
[Time] => 39
[Params] => 3231
)

[4] => stdClass Object
(
[Name] => Move
[Time] => 39
[Params] => (3734,425),0,228,0
)

)

[11] => Array
(
[0] => stdClass Object
(
[Name] => Move
[Time] => 39
[Params] => (2624,1216),0,228,0
)

[1] => stdClass Object
(
[Name] => Move
[Time] => 39
[Params] => (3264,1056),0,228,0
)

)

[12] => Array
(
[0] => stdClass Object
(
[Name] => Select
[Time] => 44
[Params] => 3251
)

[1] => stdClass Object
(
[Name] => Select
[Time] => 45
[Params] => 3231
)

)

[13] => Array
(
[0] => stdClass Object
(
[Name] => Move
[Time] => 46
[Params] => (3065,1098),0,228,0
)

)

[14] => Array
(
[0] => stdClass Object
(
[Name] => Build
[Time] => 47
[Params] => Warp,(92,34),Pylon
)

[1] => stdClass Object
(
[Name] => Build
[Time] => 47
[Params] => Warp,(92,34),Pylon
)

[2] => stdClass Object
(
[Name] => Build
[Time] => 48
[Params] => Warp,(92,34),Pylon
)

)

[15] => Array
(
[0] => stdClass Object
(
[Name] => Build
[Time] => 48
[Params] => Warp,(92,34),Pylon
)

)
...
)

)

)

)
 

gp812

Newbster

AW: array Problem

PHP:
foreach($action as $actions)
{
 if(is_array($actions))
 {
  foreach($actions as $underaction)
  {
   foreach($underaction as $_under_stdClass)
   {
    if($_under_stdClass['Name'] == 'Attack')
    {
     ...
    }
   }
  }
 }
}

$action ist das Return von der Funktion.

P.S.: Ausführungszeit wird aber enorm sein.
 

rey

Der Frager ;)

AW: array Problem

in das if kommt dann das rein wo du .... gemacht hast?

PHP:
foreach($action as $actions)
{
 if(is_array($actions))
 {
  foreach($actions as $underaction)
  {
   foreach($underaction as $_under_stdClass)
   {
    if($_under_stdClass['Name'] == 'Attack')
    {
if($info->Teams !=false){
  $i = 0;
        $replay_team = array();
        foreach($info->Teams as $team)

        {
           $i ++;
          $temp="";         
    
          foreach($info->Players as $player)
          {       
        
            if (in_array($player->Name,$team))
            {
          $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><br>";
                     $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><font style='color:#ff0000'>What a shame the Player was a hacker :(</font><br>";
        }else{
         $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><br>";
        }
                
                
                           $replay_team[$i]=$temp;
        $TeamA = $replay_team[0];
        $TeamB = $replay_team[1];
    
            }
           }
}
      }
      } 
          echo $TeamB;  
 }
   }
  }
 }
}
richtig?

P.S: wie gesgat er soll ja nur im ersten array nachgucken weil wenn e im ersten vorkommt ist es ein cheater wenn nicht dann ist es kein cheater. Wenn es bsp. im 300. array vorkommt muss es nicht gleich ein cheater sein.
 
Zuletzt bearbeitet:

gp812

Newbster

AW: array Problem

nee.
Statt ...
PHP:
$temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><br>";
                     $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><font style='color:#ff0000'>What a shame the Player was a hacker :(</font><br>";

Und dann noch dein else.

Und was meinst du unter "erstes Array"?
Das Return von der Funktion ist ein mehrdimensionales Array, da sind 4 Arrays in einander verschachtelt, welches ist das erste?
 

rey

Der Frager ;)

AW: array Problem

mit das erste meien ich das hier

[Actions] => Array
(
[0] => Array
(
[0] => stdClass Object
(
[Name] => Select
[Time] => 0
[Params] => 3251
)

[1] => stdClass Object
(
[Name] => Train
[Time] => 0
[Params] => Probe
)

[2] => stdClass Object
(
[Name] => Select
[Time] => 0
[Params] => 3247
)

....

also alle objekte ab
[1] => Array
nicht mehr

was kommt dann in [.....] das hier in etwa
PHP:
                   $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><font style='color:#ff0000'>What a shame the Player was a hacker :(</font><br>";

habe es nun so
PHP:
if($info->Teams !=true)
{
	         $i = 0;
        $team = array();
        foreach($info->Players as $player)
        {
		 $action =    php_bw_get_actions("0340 SsP)fi SsP)cR SsP)bA H.rep", $player->Name, REPASM_ALL_ACTIONS, 1);
                  
        
            if (in_array($player->Name,$team))
            {

          		foreach($action->$Actions as $action) 
{
 if(is_array($action))
 {
  foreach($action as $underaction)
  {
   foreach($underaction as $_under_stdClass)
   {
    if($_under_stdClass['Name'] == 'Attack')
    {
 if ($player->IsObserver !=1)
          {
             $i ++;
             $replay_team[$i] = "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i>"."<br>";
    }




        }else{

             $replay_team[$i] = "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i>"."<br>";
        }
        }
	$TeamAA = $replay_team[0];
	$TeamBB = $replay_team[1];

           }
      }   } echo $TeamBB;
}

}
if($info->Teams !=false){
  $i = 0;
        $replay_team = array();
        foreach($info->Teams as $team)

        {
           $i ++;
          $temp="";         
    
          foreach($info->Players as $player)
          {       $action =    php_bw_get_actions("0340 SsP)fi SsP)cR SsP)bA H.rep", $player->Name, REPASM_ALL_ACTIONS, 1);
                  
        
            if (in_array($player->Name,$team))
            {
/*                 $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i>".$aktion->Name."<br>";*/
          		foreach($action->$Actions as $action) //ZEILE 265
{
 if(is_array($action))
 {
  foreach($action as $underaction)
  {
   foreach($underaction as $_under_stdClass)
   {
    if($_under_stdClass['Name'] == 'Attack')
    {
                        $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><font style='color:#ff0000'>What a shame the Player was a hacker :(</font><br>"; 
    }
   }

 }

        }else{
         $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><br>";
        }
                
                
                           $replay_team[$i]=$temp;
        $TeamA = $replay_team[0];
        $TeamB = $replay_team[1];
    
            }
        }
}
      }}   
      } 
          echo $TeamB;
Problem ist nur nun wird nichst angezeigt
 
Zuletzt bearbeitet:

gp812

Newbster

AW: array Problem

PHP:
foreach($action as $actions)
{
 if(is_array($actions))
 {
  foreach($actions as $underaction)
  {
   foreach($underaction as $_under_stdClass)
   {
    if($_under_stdClass['Name'] == 'Attack')
    {
     $temp.= "DA DEIN TEXT";            
     $temp.= "DA DEIN TEXT";
    }
    else
    {
         $temp.= "DEIN ELSE TEXT";
     }
     break;
   }
   break;
  }
 }
}
 

rey

Der Frager ;)

AW: array Problem

ändert sich nichts...
PHP:
if($info->Teams !=false){
  $i = 0;
        $replay_team = array();
        foreach($info->Teams as $team)

        {
           $i ++;
          $temp="";         
    
          foreach($info->Players as $player)
          {       $action =    php_bw_get_actions("0340 SsP)fi SsP)cR SsP)bA H.rep", $player->Name, REPASM_ALL_ACTIONS, 1);
foreach($action->Actions[0] as $actions)
{
 if(is_array($actions))
 {
  foreach($actions as $underaction)
  {
   foreach($underaction as $_under_stdClass)
   {
    if($_under_stdClass['Name'] == 'Attack')
    {
                     $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><font style='color:#ff0000'>What a shame the Player was a hacker :(</font><br>";
        }else{
         $temp.= "<img src='img/".$player->RaceName.".png'> ".$player->Name."("."<font style='color:$player->ColorName'>".$player->ColorName."</font>".")"."<i>".$player->APM."APM</i><br>";
         }
     break;
   }
   break;
  }
 }
}  
                
                
                           $replay_team[$i]=$temp;
        $TeamA = $replay_team[0];
        $TeamB = $replay_team[1];
    
            }
           }
}
 
          echo $TeamB;  
		  ?>
hier link
 

gp812

Newbster

AW: array Problem

Hmm...nimm zuerst alle breaks raus, dann schreib nach jedem foreach irgendein Text, um zu sehen, wo der script abbricht, und ob es überhaupt in foreach reinkommt.
 

gp812

Newbster

AW: array Problem

PHP:
echo 'starte<br>';
foreach($action as $actions)
{
 echo '1.<br>';
 if(is_array($actions))
 {
  echo 'is_array => true <br>';
  foreach($actions as $underaction)
  {
   echo '2.<br>';
   foreach($underaction as $_under_stdClass)
   {
    echo '3.<br>';
    if($_under_stdClass['Name'] == 'Attack')
    {
     $temp.= "DA DEIN TEXT";            
     $temp.= "DA DEIN TEXT";
    }
    else
    {
         $temp.= "DEIN ELSE TEXT";
     }
     #break;
   }
   #break;
  }
 }
}

probier mal das.
 

rey

Der Frager ;)

AW: array Problem

hm.. nun geht er komplett durch ;)



kann man es nicht so machen das er nur in das erste objekt geht?
wie vorher beschrieben?
also
Array
(
[0] => stdClass Object
(
[Name] => Select
[Time] => 0
[Params] => 3251
)

[1] => stdClass Object
(
[Name] => Train
[Time] => 0
[Params] => Probe
)

[2] => stdClass Object
(
[Name] => Select
[Time] => 0
[Params] => 3247
)

[3] => stdClass Object
(
[Name] => Attack
[Time] => 0
[Params] => (0,0),3594,228,
)
sobald er das attack im ersten gefunden hat dann ist klar das spieler = cheater.
 

rey

Der Frager ;)

AW: array Problem

wenn ich die breaks wieder ein mache hört er da sofort auf oder wie?
dann schaut es so aus
 
Zuletzt bearbeitet:

gp812

Newbster

AW: array Problem

Die Seite geht net auf.
Also wenn es nur das erste Array untersucht werden muss, dann müssen beide breaks da rein. Wenn es nur die ersten Arrays in zweiten Dimension untersucht werden müssen, dann muss ein Break raus.
 
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

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.189
Beiträge
2.582.077
Mitglieder
67.259
Neuestes Mitglied
SaschMasch1312
Oben