PHP,数组数,两个foreach组合

时间:2018-06-28 16:17:52

标签: php foreach count

我正在解决这个无法理解的脚本,甚至不知道从哪里开始。也许有人会帮助我。 我有两个数组示例:

$a1 = array(1,2,3 ...);
$a2 = array(4,5,6 ...);

我需要的是第一个数组将所有值除以其 为此,我想获得将像这样工作的脚本(可以将数组值保存为相同的名称,因为无论如何都将继续使用它们,可以是新变量,在此示例中,我使用new)。以同样的方式,变量本身可以被指定为1,但不愿意。计数示例。

$b1 = array([0]/[1], [0]/[2], [0]/[3], [1]/[0], [1]/[2], [1]/[3], [2]/[0], [2]/[1], [2]/[3], [3]/[0], [3]/[1], [3]/[2]);
$b2 = array( *** The same like $b1 ***);

最后会去foreach将值写入表,这个我已经解决了

echo "<table><tr>";
    foreach($b1 as $key1 => $val1){
        foreach($b2 as $key2 =>$val2){

           echo "<td>".$key1.$key2."<br/>".val1*val2."</td>";

        }
        echo "</tr><tr>"; 
      }
    echo "</tr></table>"

任何人都可以帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

每个元素的划分相对简单。您用2 for循环来做。但是,必须记住的一件事是避免被0除。您是否有可能为0的元素?如果是这样,您是否希望除法结果为0或与分子相同?我在下面显示的代码假定使用后者:

function getDivided($array) {
    $length = count($array);
    $return = [];
    for ($i = 0; $i < $length; $i++) {
        for ($j = 0; $j < $length; $j++) {
            if ($i === $j) continue;
            //the following assumes that the values in the array are never < 1 Change this according to your needs
            $return[] = $array[$i] / max($array[$j], 1);

            //Another option is to use a conditional
            $return[] = $array[$j] === 0 ? $array[$i] : $array[$i] / $array[$j];
        }
    }

    return $return;
}

$b1 = getDivided($a1);
$b2 = getDivided($a2);
相关问题