$thestring = "1,2,3,8,2"
gibi bir dizem var.Virgülle ayrılmış tam sayıları intvanlara mı kullansın?
explode(',', $thestring)
ise, bir dizi dizim alıyorum. Bunun yerine bir tam sayı dizisine nasıl patlayabilirim? Böyle
$thestring = "1,2,3,8,2"
gibi bir dizem var.Virgülle ayrılmış tam sayıları intvanlara mı kullansın?
explode(',', $thestring)
ise, bir dizi dizim alıyorum. Bunun yerine bir tam sayı dizisine nasıl patlayabilirim? Böyle
Kullanım şey: $ İpi bir dizedir
$data = explode(',', $thestring);
array_walk($data, 'intval');
Evet, hatalı olduğumu fark ettim ve onu düzeltecektim. Ama ben PHP belgelerini kafa karıştırıcı buluyorum, ilk argüman için callable diyor. –
@AmigableClarkKant, bağlantıya bakın, hecelenebilir, ikincisi dizidir. Ama neyse, evet, bu en büyük PHP sorunlarından biridir. Bazı işlevler alt çizgi ile, bazıları yoktur. Bazılarının bir emri var, diğerleri ters. Garip. –
@ ProfFalken, ben dizi_map düşünür düşünüyorum? – MJoraid
yana o zaman dizelerden oluşan bir dizi alacak.
Sadece patlatılmış değerlerin önüne (int) ekleyin.
Ya array_walk işlevini kullanın: (PHP işleme döküm dizeleri ile genellikle iyidir ve/int yüzer), ama gerçekten gerekmez Çoğunlukla
$arr = explode(',', $thestring);
array_walk($arr, 'intval');
bu bağlantıyı kontrol etmek için çalışmıyor http://codepad.org/WwpN4J2x – Kathir
kesinlikle gerekli ise, Eğer intval
veya floatval
ile array_walk
yapabilirsiniz: biraz daha ayrıntılı bir şeye ihtiyacım olursa
$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
)
, ayrıca settype
içine bakabilirsiniz:
$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
)
dinamik döküm çalışıyorsanız özellikle yararlı olabilir
:
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);
// Çıktı
Orijinal dizi
Array ([0] => 1 [1] => 2 [2] => 3 [3] => 8 [4] => a [5] => b [6] => 2)
Yalnızca sayısal dizi
de kullanılabilir 210Array ([0] => 1 [1] => 2 [2] => 3 [3] => 8 [4] => 2)
$arr=explode(',', $thestring);
$newstr = '';
foreach($arr as $key=>$val){
$newstr .= $val;
}
Beklenen sonucu vereceğini sanmıyorum 12382 gibi bir dizi üretin. – biziclop
Dizginiz tamsayılar ve yalnızca virgül içerecek? –
@User, yalnızca tam sayı ve virgül, başka bir şey yok –
Bu iletiyi kontrol edin: http://stackoverflow.com/questions/9593765/how-to-convert-array-values-from-string-to-int –