如何判断经array_map获取的数组长度值是否大于1?
检查数组中字符串长度是否大于1的实现方案
你已经通过以下代码获取了数组内字符串的长度:
$array[] = "1"; $array[] = "22"; $array[] = "333"; $array[] = "4444"; $len = array_map("strlen", $array); print_r($len);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
针对你需要检查这些长度值是否大于1的需求,我整理了几种实用的实现方法,你可以根据实际场景选择:
1. 过滤出所有长度大于1的元素
如果想要提取出所有满足“长度大于1”的数值,可以用array_filter函数,它会保留回调函数返回true的元素:
// 基于你已有的$len数组 $filteredLens = array_filter($len, function($value) { return $value > 1; }); print_r($filteredLens); // 输出结果:Array ( [1] => 2 [2] => 3 [3] => 4 )
2. 生成对应位置的布尔标记数组
如果需要一个和原长度数组一一对应的布尔数组(true表示该位置长度大于1,false则相反),可以再次使用array_map配合匿名函数:
$isLenGreaterThanOne = array_map(function($value) { return $value > 1; }, $len); print_r($isLenGreaterThanOne); // 输出结果:Array ( [0] => false [1] => true [2] => true [3] => true )
3. 验证所有长度是否都大于1
如果要确认数组中每一个字符串的长度都大于1,可以用两种简洁的方式实现:
// 方法一:利用array_reduce遍历判断 $allGreaterThanOne = array_reduce($len, function($carry, $value) { return $carry && ($value > 1); }, true); var_dump($allGreaterThanOne); // 输出:bool(false) // 方法二:取最小长度直接判断(更简洁) $allGreaterThanOne = min($len) > 1; var_dump($allGreaterThanOne); // 输出:bool(false)
4. 检查是否存在至少一个长度大于1的元素
如果只需要确认数组中存在长度大于1的元素,这两种方法都很实用:
// 方法一:取最大长度判断 $hasGreaterThanOne = max($len) > 1; var_dump($hasGreaterThanOne); // 输出:bool(true) // 方法二:判断过滤后的数组是否非空 $hasGreaterThanOne = !empty(array_filter($len, function($v) { return $v > 1; })); var_dump($hasGreaterThanOne); // 输出:bool(true)
内容的提问来源于stack exchange,提问作者MagicHat
相关产品推荐
相关产品推荐

