Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当我将a中的乘法结果与for each组合时,结果错误_Php_Foreach - Fatal编程技术网

Php 当我将a中的乘法结果与for each组合时,结果错误

Php 当我将a中的乘法结果与for each组合时,结果错误,php,foreach,Php,Foreach,也许是睡眠不足,但我的问题是: $totalAllow = 0; foreach ($pictPrices as $pictPrice) { foreach ($picsAllow as $key => $value) { $totalAllow += $value * $pictPrice['price']; dd($totalAllow);

也许是睡眠不足,但我的问题是:

$totalAllow = 0;
foreach ($pictPrices  as $pictPrice) {
                    foreach ($picsAllow as $key => $value) {
                        $totalAllow += $value * $pictPrice['price'];
                        dd($totalAllow);
                    }
                    dd($totalAllow);
                }
$picsAllowTotal = $totalAllow;
我的
$value
(这里是3,2,1,5)乘以我的
$pictPrice['price']
(这里是80,100,150,35)在第一个
dd($totalAllow)
我确实给出了我期望的结果,240。为什么在第二个
dd($totalAllow)
中我得到480

在我的
$picsallowtoal
中,我期望765(对于(3x80)+(2x100)+(1x150)+(5x35)),但事实并非如此!是4015

你能解释一下我的错误在哪里吗

谢谢你抽出时间

-----------答复-----------

$totalAllow=0;
对于($price=0;$price
这是因为您的代码将一个数组的每个成员乘以第二个数组的每个成员的结果相加。您不需要嵌套循环来获得预期的结果

请尝试以下代码:

<?php

// 80, 100, 150, 35
$pictPrices = [
    ['price'=>80],
    ['price'=>100],
    ['price'=>150],
    ['price'=>35],
];

// 3, 2, 1, 5
$picsAllow = [
    3, 2, 1, 5
];

$totalAllow = 0;

for ($i=0; $i < count($pictPrices); $i++) { 
    $totalAllow += $picsAllow[$i] * $pictPrices[$i]['price'];
    dd($totalAllow);
}

function dd($val) { echo $val . "\r\n"; }

?>


你能在问题中包括
$picsAllow
$pictPrices
两个值吗?当然,$picsAllow(key:value):1:3、2:2、3:1、4:5和$pictPrices是我的db行,带有一个“id”、“size”和“price”谢谢,这让我更接近了,但是,因为我的$picsAllow=[12x24=>3、21x56=>2等等…],它给了我一个未定义的偏移量,我不知道“for”是否可以有两个条件,否则我怎么办?好的,只是做了array_值($picsAllow)[$price],再次感谢。
<?php

// 80, 100, 150, 35
$pictPrices = [
    ['price'=>80],
    ['price'=>100],
    ['price'=>150],
    ['price'=>35],
];

// 3, 2, 1, 5
$picsAllow = [
    3, 2, 1, 5
];

$totalAllow = 0;

for ($i=0; $i < count($pictPrices); $i++) { 
    $totalAllow += $picsAllow[$i] * $pictPrices[$i]['price'];
    dd($totalAllow);
}

function dd($val) { echo $val . "\r\n"; }

?>