>我需要一個幫助,我需要使用 PHP 將數字與符分開。我在下面解释我的代码。
$subcatid=a1,a2,4,5
在这里,我有一些带有逗号分隔符的值,我需要在这里首先单独的数值(i.e-4,5
)并将它们推入数组中,然后我必须将其余数值与字符(i.e-1 from a1,2 from a2
)分开,并将这些分离的值推入另一个数组。请帮助我。
试试这个
<?php
$subcatid="a1,a2,4,5";
$subcatid_arr = explode(",",$subcatid);
$onlynum_subcatid = array_filter($subcatid_arr, 'is_numeric');
$onlynum = implode(",",$onlynum_subcatid );
echo "Only Number : ".$onlynum;
$notnum_subcatid = array_diff($subcatid_arr,$onlynum_subcatid );
$notnum = implode(",",$notnum_subcatid );
echo "'nNot Number : ".$notnum;
?>
输出为 :
Only Number : 4,5
Not Number : a1,a2
在这里查看 : https://eval.in/539059
使用此代码
$subcatid="a1,a2,4,5";
$strArray = explode(',',$subcatid);
$intArr = array();
foreach($strArray as $key=>$value):
if(preg_match('/^[0-9]*$/',$value)):
$intArr[]=$value;
else:
$str2Arr = str_split($value);
foreach($str2Arr as $keyStr=>$lett):
if(preg_match('/^[0-9]*$/',$lett)):
$intArr[]=$lett;
endif;
endforeach;
endif;
endforeach;
var_dump($intArr);
在此
代码中,您可以期待结果。根据需要使用$number、$char阵列进行处理
<?php
$subcatid="a1,a2,4,5";
$subcatid_arr = explode(",",$subcatid);
for($i=0;$i<sizeof($subcatid_arr);$i++){
if(is_numeric($subcatid_arr[$i])){
$number[]=$subcatid_arr[$i];
}
else{
$char[]=$subcatid_arr[$i];
}
}
print_r($number);// 4,5
print_r($char);// a1,a2
?>
如果我理解正确,您希望将所有原始数值放入单个数组中,然后仅过滤剩余的数字部分并将它们放入第二个数组中。
如果这是正确的,那么我相信这应该做你想要的。
<?php
$subcatid = 'a1,a2,4,5';
$subcat_array = explode(",",$subcatid);
$subNums1 = [];
$subNums2 = [];
foreach($subcat_array as $item) {
if(is_numeric($item)) {
// This pushes all numeric values to the first array
$subNums1[] = $item;
} else {
// This strips out everything except the numbers then pushes to the second array
$subNums2[] = preg_replace("/[^0-9]/","",$item);
}
}
print_r($subNums1);
print_r($subNums2);
?>
这将返回:
Array (
[0] => 4
[1] => 5
)
Array (
[0] => 1
[1] => 2
)