如何使用 PHP 将数值与字符分开


How to seprate numeric value from charcter using PHP

>我需要一個幫助,我需要使用 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 
)