-2

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) { }であることを除いて、配列内の値が正しいことがわかります 。元の 2 つと同じ数またはエントリを持つ必要があります。前もって感謝します。

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 に答える