可使用array_filter配合is_numeric过滤出非数字元素:遍历数组,对每个元素调用!is_numeric($v)判断,再用array_values重置索引。

如果您有一个包含混合类型元素的PHP数组,其中包含数字和非数字元素,需要仅保留非数字元素,则可以使用多种内置函数组合实现过滤。以下是几种可行的操作方法:
一、使用array_filter配合is_numeric
该方法利用array_filter遍历数组,并通过is_numeric判断每个元素是否为数字(包括字符串形式的数字如"123"、"3.14"、"0x1A"等),从而剔除所有被判定为数字的值。
1、定义原始数组,例如:$arr = [1, "hello", 3.14, "world", "42", null, false, 0];
2、调用array_filter函数,传入回调函数function($v) { return !is_numeric($v); }。
立即学习“PHP免费学习笔记(深入)”;
3、使用array_values重置索引,确保返回数组具有连续的数字键。
二、使用array_filter配合filter_var
此方式借助filter_var的FILTER_VALIDATE_FLOAT和FILTER_VALIDATE_INT验证能力,可更精确地区分整数、浮点数与纯字符串,避免is_numeric对"1e2"或"0x1F"等格式的过度匹配。
1、编写自定义回调函数,分别用filter_var($v, FILTER_VALIDATE_INT)和filter_var($v, FILTER_VALIDATE_FLOAT)检测是否为整型或浮点型数值。
2、当两者均返回false时,保留该元素。
3、将该回调函数作为第二个参数传入array_filter。
三、使用foreach循环手动筛选
该方法不依赖高阶函数,通过显式遍历和条件判断构建新数组,逻辑清晰,便于加入额外判断条件(如排除零值、空字符串等)。
1、初始化一个空数组$result = [];
还木有评论哦,快来抢沙发吧~