PHP Array string to int

Schumiel

Lieutenant
Registriert
Jan. 2010
Beiträge
825
Hallo,

ich habe ein normales Array.
Dabei sind die Inhalte mit Text und Zahl. Jedoch werden mir alle Zahlen als Typ String gespeichert, wenn ich diese aus einer Datenbank abfrage.

Ich habe versucht mit array_map dies zu ändern, jedoch werden dann auch die Inhalte mit Texte zu integer und erhalten den Wert 0.

Hat jemand eine Idee?
 
Schumiel schrieb:
Jedoch werden mir alle Zahlen als Typ String gespeichert, wenn ich diese aus einer Datenbank abfrage.

Du meinst wenn du anschließend in die Datenbank schaust wo die Daten aus dem Array gespeichert werden? Landen die alle in der gleichen Spalte?

Wie sieht das Array aus? Mehrdimensional: array(array('blabla', 1), array('foo', 2), ...) oder eindimensional array('blabla', 1, 'foo', 2, ...)?
 
Jedes einzelne Array-Element versuchen nach int zu casten.
Wenn Error kommt, weißt du, dass es Text ist und kannst entsprechend reagieren.
 
  • Gefällt mir
Reaktionen: psYcho-edgE
Würde in diese Richtung gehen:
PHP:
$arr = array('foo', 2, 'bar', 6, '3');

foreach($arr as $item){
    if(intval($item) == 0 || $item === '0'){
        // do string stuff
    } else {
        // do int stuff
    }
}
 
Zuletzt bearbeitet:
Ich habe es nun so gelöst.
PHP:
foreach ($testArray as $item => $key) {
    if (is_numeric($key)) {
        $resultArray[$item] = (int) $key;
    } else {
        $resultArray[$item] = $key;
    }
}
 
  • Gefällt mir
Reaktionen: psYcho-edgE
PHP:
foreach ($testArray as $item => $key) {
    $resultArray[$item] = is_numeric($key) ? (int)$key : $key;
}
So sieht es etwas schöner aus als mit dem if else ;)
 
  • Gefällt mir
Reaktionen: psYcho-edgE
Nur zur Info, falls das für dich relevant sein sollte: is_numeric() prüft nicht ausschließlich auf integer.

"0x539", "123.456", "1337e1" - die gelten alle als numerisch, dein int-Cast würde dann unter Umständen eine andere Zahl hervorbringen, als du rein gibst.

Falls du prüfen willst, ob ein String nur aus Zahlen besteht, nimmst du am besten ctype_digit(), das arbeitet auch schneller als is_numeric().
 
  • Gefällt mir
Reaktionen: psYcho-edgE
Zurück
Oben