php 乘法函数中如何从数组中删除字符串

qaxu7uf2  于 2022-12-25  发布在  PHP
关注(0)|答案(2)|浏览(117)
function multiply (...$nums ){
  $result = 1;
  foreach ($nums as $num ){
    if (gettype($num)==gettype("k")){
       continue;
     }
    echo $result = $result*$num;
  }

}
echo multiply(10, 20);
echo "<br>";
echo multiply("A", 10, 30);
echo "<br>";
echo multiply(100.5, 10, "B");

我试着创建一个函数来乘以给定的参数,但是如果参数是字符串,它会跳过它,如果参数是浮点型,它会在开始乘法过程之前将其转换为int型

6rqinv9w

6rqinv9w1#

试试这个:is_string你可以用来检查它是否是一个字符串,然后如果它是跳过它。is_float检查它是否是浮点,如果它是使用intval转换...

<?php

function multiply(...$arguments) {
    $result = 1;
    foreach ($arguments as $arg) {
        if (is_string($arg)) {
            continue;
        }
        if (is_float($arg)) {
            $arg = intval($arg);
        }
        $result *= $arg;
    }
    return $result;
}


echo multiply(10, 20, 'TEST'); //200
echo multiply("A", 10, 30); //300
echo multiply(100.5, 10, "B"); //1000
ha5z0ras

ha5z0ras2#

可以使用array_filter()删除非数字值,使用array_map()强制转换为整数,然后使用array_product()计算这些值的乘积。
代码(demo

function multiply(...$nums): int|float 
{
    $nums = array_filter($nums, 'is_numeric');
    $nums = array_map('intval', $nums);
    return array_product($nums);
}

echo multiply(10, 20) . "\n";
echo multiply("A", 10, 30) . "\n";
echo multiply(100.5, 10, "B") . "\n";

输出:

200
300
1000

相关问题