Dire che ho una stringa come questa $thestring = "1,2,3,8,2"
.Esplodere interi separati da virgole a intvals?
Se I explode(',', $thestring)
esso, ottengo una matrice di stringhe. Come faccio a esplodere su una matrice di numeri interi?
Dire che ho una stringa come questa $thestring = "1,2,3,8,2"
.Esplodere interi separati da virgole a intvals?
Se I explode(',', $thestring)
esso, ottengo una matrice di stringhe. Come faccio a esplodere su una matrice di numeri interi?
usare qualcosa di simile a questo:
$data = explode(',', $thestring);
array_walk($data, 'intval');
Sì, ho notato che avevo torto e che stavo per modificarlo. Ma trovo che i documenti PHP siano confusi, dice callable per primo argomento. –
@AmigableClarkKant, vedere il collegamento, callable è il secondo, il primo è array. Ma comunque, sì, questo è uno dei maggiori problemi di PHP. Alcune funzioni sono con trattino basso, altre no. Alcuni hanno un ordine, altri hanno il rovescio. Strano. –
@ Prof.Falken, penso che pensi a array_map? – MJoraid
Da $ TheString è una stringa allora si ottiene un array di stringhe.
Basta aggiungere (int) di fronte ai valori esplosi.
Oppure utilizzare la funzione array_walk:
$arr = explode(',', $thestring);
array_walk($arr, 'intval');
non funziona per me checkout questo link http://codepad.org/WwpN4J2x – Kathir
Per la maggior parte non si dovrebbe davvero bisogno di (PHP è generalmente buono con gestione delle stringhe di fusione e galleggia/int), ma se è assolutamente necessario, si può array_walk
con intval
o 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
)
Se avete bisogno di qualcosa di un po 'più dettagliato, si può anche prendere in considerazione settype
:
$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
)
Questo potrebbe essere particolarmente utile se si sta cercando di lanciare in modo dinamico:
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)
}
$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);
// uscita
matrice originale
Array ([0] => 1 [1] => 2 [2] => 3 [3] => 8 [4] => a [5] => b [6] => 2)
numerico solo serie
Array ([0] => 1 [1] => 2 [2] => 3 [3] => 8 [4] => 2)
$arr=explode(',', $thestring);
$newstr = '';
foreach($arr as $key=>$val){
$newstr .= $val;
}
Non penso che procuda il risultato atteso, sarà produrre una stringa come '12382'. – biziclop
la stringa contiene numeri interi e solo virgola ?? –
@User, solo numeri interi e virgole, nient'altro –
Controlla questo post: http://stackoverflow.com/questions/9593765/how-to-convert-array-values-from-string-to-int –