PHP Werte aus Array auslesen und im String umbenennen

HigH_HawK

Cadet 4th Year
Registriert
Jan. 2008
Beiträge
105
Hallo liebe CB'ler,

ich habe hier ein kleines Problemchen mit einem Array. Ich habe mir ein kleines Script gebastelt, welches DXDiag.txt Dateien auslesen kann und dann das Ergebnis zunächst in einen Array speichert und von dort schön ordentlich in eine Tabelle einfügt.

Mein Problem besteht nun darin, dass wenn DXDiag, anstelle vom Festplattenname, nur deren Bezeichnung/Produktcode wiedergibt.

Beispiel:

ST980813ASG ATA Device => Seagate Momentus 80 GB

Dies ist nun der Laufwerk Array mit der Variable "$model[1]" ($model - würde noch vor die Bezeichnung ein "Model:" setzen, deshalb $model[1]):

PHP:
Array
(
[0] => ST980813ASG ATA Device
[1] => TSSTcorp CDRW/DVD TSL462D ATA Device
)

Nun mache ich eine Abfrage, ob der Wert "ST980813ASG ATA Device" im Array vorhanden ist und lasse diesen gleich durch den vollständigen Namen ersetzen:

PHP:
if ( in_array('ST980813ASG ATA Device', $model[1]) ) {

$model[1] = 'Seagate Momentus 80 GB (ST980813ASG)';

}

Die Ausgabe in der Tabelle sieht nun wie folgt aus:

PHP:
<? for($i=0;$i < count($drives[1]);$i++) {?>

<tr>
<td style="color: #ffffff; background-color: #5c80a2; text-align: center;"><?=rebuild($drives[1][$i])?></td>
<td style="color: #ffffff; background-color: #5c80a2; text-align: center;"><?=$total[1][$i]?></td>
<td style="color: #ffffff; background-color: #5c80a2; text-align: center;"><?=$free[1][$i]?></td>
<td style="color: #ffffff; background-color: #5c80a2; text-align: center;"><?=$fsys[1][$i]?></td>
<td style="color: #ffffff; background-color: #5c80a2; text-align: center;"><?=$model[1][$i]?></td>
</tr>
<? } ?>

Mein Problem besteht nun darin, dass er nicht meinen ersetzten Wert anzeigt, sondern weiterhin den aus dem Array. Was mache ich hier falsch?

Ich bin für jede Anregung/Hilfe/Kritik offen!

Gruß
HigH_HawK
 
Dies ist nun der Laufwerk Array mit der Variable "$model[1]" ($model - würde noch vor die Bezeichnung ein "Model:" setzen, deshalb $model[1]):

Das verstehe ich nicht.

$model scheint ein Array zu sein. $model[1] ist was? Ein String? Dann ergibt aber die Ausgabe ($model[1][$i]) irgendwie keinen Sinn.

Wenn es ein String ist, dann kannst du in deinem if nicht mit in_array arbeiten.

PHP:
if ($model[1] == 'ST980813ASG ATA Device') {
  $model[1] = 'Seagate Momentus 80 GB (ST980813ASG)';
}

Generell würde ich sowieso eher mit str_replace arbeiten. Das funktioniert auch direkt mit Arrays.

Ansonsten brauchen wir mehr Infos über deine Datenstruktur. var_dump oder print_r helfen dabei.
 
Zuletzt bearbeitet:
Back to the basics!

Entweder dir fehlt Schlaf und du siehst den Wald vor lauter Bäumen nicht - was durchaus mal vorkommen kann. Oder du hast PHP nicht verstanden und solltest dich einfach mal bemühen, es erst zu lernen bevor du es anzuwenden versuchst... nichts für ungut.

Tip: Ich sehe da keinen syntaktischen Fehler. Es funktioniert alles so wie es niedergeschrieben wurde. Und lies die Doku zu in_array.
 
Zuletzt bearbeitet:
Klingt sehr danach das dein in_array den Wert nicht findet. Würde da den Fehler suchen. Nur versteh ich anhand deiner Beschreibung nicht genau wieso model[1] etc :D
 
Entschuldige die schlechte Darstellung. :(

Also $model ist ein Array und gibt folgendes aus:

PHP:
Array
(
    [0] => Array
        (
            [0] =>  Model: ST980813ASG ATA Device
            [1] =>  Model: TSSTcorp CDRW/DVD TSL462D ATA Device
        )

    [1] => Array
        (
            [0] => ST980813ASG ATA Device
            [1] => TSSTcorp CDRW/DVD TSL462D ATA Device
        )

)

$model[1] ist auch ein Array, allerdings ohne dieses "Model : " (also etwas verkürzt):

PHP:
Array
(
    [0] => ST980813ASG ATA Device
    [1] => TSSTcorp CDRW/DVD TSL462D ATA Device
)
 
OK, also wird grundsätzlich mit dem Array $model[1] gearbeitet. Jetzt musst du schauen, ob in diesem Array der gesuchte Wert ist und diesen einen Wert dann ersetzen, ohne das Array an sich zu "zerstören".

Das geht entweder manuell mit einer Schleife oder direkt mit str_replace.
 
character schrieb:
OK, also wird grundsätzlich mit dem Array $model[1] gearbeitet. Jetzt musst du schauen, ob in diesem Array der gesuchte Wert ist und diesen einen Wert dann ersetzen, ohne das Array an sich zu "zerstören".

Das geht entweder manuell mit einer Schleife oder direkt mit str_replace.

Jetzt wo du es so sagst, sehe ich, dass der Fehler in der Abfrage und im Replacement liegt. Das muss ein riesen Wald gewesen sein :rolleyes: :)

Ich danke Dir vielmals für Deine Hilfe!
 

Ähnliche Themen

Antworten
1
Aufrufe
2.743
Zurück
Oben