我需要一个help.i需要使用PHP将数值与字符分开。我正在解释下面的代码。
$subcatid=a1,a2,4,5
这里我有逗号分隔符的一些值我首先需要单独的数值(i.e-4,5
)并将它们推入数组然后我必须将其余的数值与字符(i.e-1 from a1,2 from a2
)分开并推送那些分开的值变成另一个数组。请帮助我。
答案 0 :(得分:2)
试试这个
<?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
答案 1 :(得分:0)
使用此代码
$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);
答案 2 :(得分:0)
在此代码中,您可以期待您的结果。根据需要使用$ 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
?>
答案 3 :(得分:0)
如果我理解正确,你想将所有原始数值放入一个数组中,然后只过滤残羹剩饭的数字部分并将它们放入第二个数组。
如果这是正确的,那么我相信这应该做你想要的。
<?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
)