如何对两个同维度数组的对应元素执行除法运算?
实现PHP数组对应元素相除的几种方法
嘿,这事儿好办,针对你说的两个同维度数组对应元素相除的需求,给你两种简单靠谱的实现方式:
方法一:用array_map()快速搞定
这是PHP里处理这类数组对应操作最简洁的方式,array_map()能同时遍历多个数组,对每一组对应位置的元素执行自定义逻辑:
$array1 = ['10','20','30']; $array2 = ['5','10','5']; $result = array_map(function($val1, $val2) { // 先把字符串转成整数(避免字符串运算坑),计算后再转回字符串 return (string)((int)$val1 / (int)$val2); }, $array1, $array2); // 打印结果看看 print_r($result); // 输出:Array ( [0] => 2 [1] => 2 [2] => 6 )
为啥要转类型?因为你的数组元素是字符串类型,如果直接做除法,PHP虽然会自动转换,但手动转一下更稳妥,避免出现意料之外的问题。
方法二:foreach循环手动遍历
要是你更习惯传统的循环写法,也可以手动遍历数组来计算:
$array1 = ['10','20','30']; $array2 = ['5','10','5']; $result = []; // 遍历第一个数组的键值,同时取第二个数组对应位置的元素 foreach ($array1 as $key => $num1) { $num2 = $array2[$key]; // 转类型计算后存入结果数组 $result[$key] = (string)((int)$num1 / (int)$num2); } print_r($result); // 同样能得到你想要的结果
小提醒:这里默认两个数组的长度完全一致,如果实际场景中有可能长度不同,建议先加个判断,比如if (count($array1) !== count($array2)),避免出现索引不存在的报错~
内容的提问来源于stack exchange,提问作者user2430933
相关产品推荐
相关产品推荐

