-2

我正在尝试将两个数组相乘(价格和用户输入的数量。

if(isset($_POST['submit']))
{

unset($_POST['submit']);
$r=array(); 
$userqty=array();
$userqty=$_POST;    

    function array_multiply($userqty, $fullbox) {

    if (!is_array($userqty) || !is_array($fullbox)) {
        exit('Needs to be an array.');
    }

    $c1 = count($userqty);
    $c2 = count($fullbox);

    if ($c1 != $c2) {
        exit('$setOne and $setTwo must be the same length.');
    }

    for ($i = 0; $i < $c1; $i++) {
        $r[$i] = $userqty[$i] * $fullbox[$i];
    }

    return $r;

}
var_dump($fullbox);
echo '<br>';
echo '<br>';
var_dump($userqty);
echo '<br>';
echo '<br>';
var_dump($r);
}

当我在最后进行数组转储时,我看到我的值在我的数组中是正确的,除了我的结果数组的值是array(0) { } 当它应该具有与我原来的两个相同的数字或条目时。提前致谢。

4

1 回答 1

4

这里有很多问题!

  • $r是一个局部变量。要么使其成为全局(不要),要么只使用返回值。
  • 您实际上并没有调用该函数。
  • 你不声明$r,即使它是为你隐式完成的。

快速修复:

var_dump(array_multiply($userqty, $fullbox));

彻底重写:

function array_multiply($a, $b) {
    $len = count($a);

    if($len !== count($b)) {
        throw new LengthException('The two arguments to array_multiply should have the same length.');
    }

    $result = array();

    for($i = 0; $i < $len; $i++) {
        $result[] = $a[$i] * $b[$i];
    }

    return $result;
}

也不要只是传入$_POST。那会很麻烦。

于 2012-07-13T17:53:01.153 回答