Typ einer Variable in einem Array erkennen

Nitromaus

Erfahrenes Mitglied
Hi,


ich habe ein array in dem ich ich zwei verschiedene Typen an Elementen drin habe. Zum einem Elemente vom Typ "Subdir" und zum einem welche vom Typ "Pic". Nun möchte ich aus diesem array, die Elemente herausfischen vom Typ "Pic". Wie kann man dies machen.

Dankeschön.

Tschau
 
PHP:
$aNewArray = array();
foreach($aArray as $sEl) {
    if (derTypDesElementes($sEl) == 'foo') {
        $aNewArray[] = $sEl;
    }
}
 
Original geschrieben von Fabian Hofmann
PHP:
$aNewArray = array();
foreach($aArray as $sEl) {
    if (derTypDesElementes($sEl) == 'foo') {
        $aNewArray[] = $sEl;
    }
}

sorry aber ich versteh des nciht ganz. kannst du des ein bisschen erklären.


ich habe ein variable $bla und will checken ob sie ein "Pic" oder ein "Subdir" ist. Ist ein einfacheres Beispiel. Wie mache ich des? Und was muss ich denn für des 'foo' einsetzen?

dankeschön
 
Zuletzt bearbeitet:
ich glaub des ist nicht wirklich die richtige funktion, da ich nicht nach nem wert in nem array suchen will, sondern nach einem typ.


Array
- subdir
- pic
- pic
-subdir
- pic


so könnte des array aussehen. pic ist eine klasse und subdir ist auch eine klasse. Nun möchte ich eine if abfrage machen bei jedem element des array und in der art fragen:

if($array[$i] == subdir)
{
}
else if($array[$i] == pic)
{
}
 
Achso, ich hab immer an dem "Typ" gerätselt ;)
PHP:
<?php
foreach ($array as $string) {
    if ($string == 'subdir') {
        echo 'ist ein subdir';
    }
}
?>
Das kannst du ja noch anpassen.
 
sprich der "Wert" des Arrayelements kann ein Objekt der Klasse "Pic" bzw "Subdir" sein?
Dann schaust du ob das aktuelle Element ein Objekt ist und musst im Objekt halt noch vielleicht eine Variable / Konstante speichern die den Typ enthält, zumindest ist mir keine FUnktion bekannt die einem sagt, von welcher Klasse ein Objekt ist , da ich selten mit "OO" in PHP arbeite.

Btw würde ich je nach grösse des Arrays mit while in Kombination mit each arbeiten, da es direkt mit dem Array arbeitet und nicth mit einer Kopie.

Ingesamt dann ca. so:

PHP:
$picArray = array();
reset($meinArray);
while( $data = each($meinArray) )
{
 //Ist das aktuelle Element ein Objekt?
 if( is_object($data[1]) )
 {
   //Wenn der selbstgebaute Objektkennzeichner == Pic
   //In neuem Array speichern oder was auch immer machen
   if( $data[1]->type = "pic" )
         $picArray[] = $data[1];
 }
}

hth
 
Nein , was du als $string bezeichnest ist ein object vom typ subdir oder vom typ pic. und ich will keine string abfrage machen, sondern eine objektabfrage.

ich brauche also eine funktion wie gettype(), alleridnsg liefert gettype() bei einem objekt nur "object" zurück. Ich muss aber zwischen diesen unterscheiden
 
ei sag ich doch. deswegen schauen ob es ein object ist mit is_object oder meinetwegen mit if( gettype() == "object" ) und dann musst du dir eben behelfen in dem du deiner Klasse und somit deinem Object eine Konstante / Variable von Haus aus mitgibst, in der du als String speicherst von welcher Art das ganze ist und führst darüber einen String vergleich durch. Und genau das macht auch das Script was ich vor deinem Post geschrieben habe.
 
Zurück