2013-02-28 10 views
8

Angenommen, ich habe eine Zeichenfolge wie diese $thestring = "1,2,3,8,2".Explode Komma getrennte Ganzzahlen zu intvals?

Wenn ich explode(',', $thestring) es, bekomme ich eine Reihe von Zeichenfolgen. Wie kann ich es stattdessen zu einem Array von ganzen Zahlen explodieren?

+0

wird Ihre Zeichenfolge Ganzzahlen enthalten und nur Komma ?? –

+0

@User, nur ganze Zahlen und Kommas, sonst nichts –

+1

Überprüfen Sie diesen Beitrag: http://Stackoverflow.com/questions/9593765/how-to-convert-array-values-from-string-to-int –

Antwort

9

Verwendung so etwas wie dieses:

$data = explode(',', $thestring); 
array_walk($data, 'intval'); 

http://php.net/manual/en/function.array-walk.php

+0

Ja, ich bemerkte, dass ich falsch lag und es zurück bearbeiten wollte. Aber ich finde die PHP-Dokumente verwirrend, heißt es beim ersten Argument abrufbar. –

+2

@AmigableClarkKant, siehe den Link, aufrufbar ist zweite, erste ist Array. Aber egal, ja, das ist eines der größten PHP-Probleme. Einige Funktionen sind mit Unterstrichen, andere ohne. Manche haben eine Bestellung, andere haben eine umgekehrte Reihenfolge. Seltsam. –

+0

@ Prof.Falken gut, ich denke, Sie denken Array_map? – MJoraid

0

Da $ thestring ein String ist, dann werden Sie ein Array von Strings erhalten.

Fügen Sie einfach (int) vor den Explosionswerten hinzu.

Oder verwenden Sie die array_walk Funktion:

$arr = explode(',', $thestring); 
array_walk($arr, 'intval'); 
+0

funktioniert nicht für mich Check-out dieser Link http://codepad.org/WwpN4J2x – Kathir

0

Zum größten Teil sollten Sie nicht wirklich brauchen (PHP ist in der Regel gut mit der Handhabung Guss Saiten und Schwimmer/Ints), aber wenn es unbedingt notwendig ist, Sie können array_walk mit intval oder floatval:

$arr = explode(',','1,2,3'); 
// use floatval if you think you are going to have decimals 
array_walk($arr,'intval'); 
print_r($arr); 

Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
) 

Wenn Sie etwas ein bisschen ausführlicher benötigen, können Sie auch in settype aussehen:

$arr = explode(",","1,2,3"); 
function fn(&$a){settype($a,"int");} 
array_walk($f,"fn"); 
print_r($f); 

Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
) 

, die besonders nützlich sein könnte, wenn Sie versuchen, dynamisch zu werfen:

class Converter { 
    public $type = 'int'; 
    public function cast(&$val){ settype($val, $this->type); } 
} 
$c = new Converter(); 

$arr = explode(",","1,2,3,0"); 
array_walk($arr,array($c, 'cast')); 
print_r($arr); 

Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
    [3] => 0 
) 

// now using a bool 
$c->type = 'bool'; 
$arr = explode(",","1,2,3,0"); 
array_walk($arr,array($c, 'cast')); 
var_dump($arr); // using var_dump because the output is clearer. 

array(4) { 
    [0]=> 
    bool(true) 
    [1]=> 
    bool(true) 
    [2]=> 
    bool(true) 
    [3]=> 
    bool(false) 
} 
1
$thestring = "1,2,3,8,a,b,2"; 

$newArray = array(); 
$theArray = explode(",", $thestring); 

print_r($theArray); 

foreach ($theArray as $theData) { 
    if (is_numeric($theData)) { 
    $newArray[] = $theData; 
    } 
} 

print_r($newArray); 

// Ausgabe

Original-Array

Array ([0] => 1 [1] => 2 [2] => 3 [3] => 8 [4] => a [5] => b [6] => 2) 

Numeric nur Array

Array ([0] => 1 [1] => 2 [2] => 3 [3] => 8 [4] => 2) 
17

array_map auch verwendet werden könnten:

$s = "1,2,3,8,2"; 
$ints = array_map('intval', explode(',', $s)); 
var_dump($ints); 

Ausgang:

array(5) { 
    [0]=>  int(1) 
    [1]=>  int(2) 
    [2]=>  int(3) 
    [3]=>  int(8) 
    [4]=>  int(2) 
} 

Beispiel codepad.

1
$arr=explode(',', $thestring); 
$newstr = ''; 
foreach($arr as $key=>$val){ 
    $newstr .= $val; 
} 
+2

Ich denke nicht, dass es das erwartete Ergebnis produziert, wird es Erzeugen Sie eine Saite wie '12382'. – biziclop

Verwandte Themen