2017-01-26 2 views
0

Ich habe ein Array. Sieht wie folgt aus:PHP: Konvertieren Sie alle numerischen Felder des Arrays in Ins oder Floats

[ 
    { 
     "id": "2", 
     "number": "2", 
     "debtor_number": null, 
     "name": "Ziegler", 
     "firstname": "Lisa",    
     "credit": "0.00", 
    }, 
    { 
     "id": "3", 
     "number": "3", 
     "debtor_number": null, 
     "name": "Ziegler", 
     "firstname": "Lisa",    
     "credit": "51.20", 

Gibt es eine posibility konvertieren alle numerischen fileds wie 2 oder 51.20 zu ints und schwimmt bzw. (ich meine nicht manuell)?

manuell mache ich es auf diese Weise:

   foreach ($array as &$val) { 
        foreach ($val as &$value) { 
         if(is_numeric($value)){ 
          if(ctype_digit($value)) 
           $value= (int)$value; 
          else 
           $value = (float)$value; 
         } 
        } 
       } 

Antwort

1

Wenn die Tiefe des Arrays variieren kann, und Sie wollen, dass es für alle Ebenen zu arbeiten, können Sie array_walk_recursive():

array_walk_recursive($arr, function(&$val) { 
    if (is_numeric($val)) { 
     if (ctype_digit($val)) { 
      $val= (int) $val; 
     } else { 
      $val = (float) $val; 
     } 
    } 
}); 

Ein example .

Verwandte Themen