更改变量值并在循环后推送它

时间:2016-08-28 08:14:20

标签: php arrays

我有这样的代码

s = s.replaceAll("--([^-]+)--", "<strike>$1</strike>");

简单来说,我想得到的是将索引从$jumlahcolspan = array();//new array $horizontaldeep = 5; $level = array(5,4,3,8,7);//old array for ($j = 0; $j < $horizontaldeep; $j++) { $jml = 1; for ($i = $j + 1; $i < $horizontaldeep; $i++) { $jml = $level[$i] * $jml; } array_push($jumlahcolspan, $jml); } 开始的旧数组值乘以最后一个并将其推送到另一个数组。 所以,它有点像这样

$i+1

我试过这个,但它也不起作用

old array:  [5, 4, 3, 8, 7]

new array: [4*3*8*7, 3*8*7, 7, 1]

也试过这个,但也不行。

for ($j = 0; $j < $horizontaldeep; $j++) {
    $jml = 1;
    for ($i = $j + 1; $i < $horizontaldeep; $i++) {
        global $jml;
        $jml = $level[$i] * $jml;
    }
    array_push($jumlahcolspan, $jml);
}

注意:现在我正在查看我的完整代码。在我的代码中可能是不对的。 我认为问题与for ($j = 0; $j < $horizontaldeep; $j++) { array_push($jumlahcolspan, array_product(array_slice($level, $j+1))); } 变量有关,但我无法弄清楚如何解决这个问题。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

  

一种方法是使用Recursive Function来实现该目标。下面的递归函数演示了如何。顺便说一下,你也可以quick-test it here

<?php

    $oldArray   = [5,4,3,8,7];

    function arrayMatrixMultiply(array $old, array &$newArray=[]){
        $result     = 1;
        foreach($old as $key=>$value){
            if($key != 0){
                $result*=$value;
            }
        }
        $newArray[] = $result;
        array_splice($old, 0, 1);
        if(!empty($old)){
            // JUST RECURSE TILL THE $oldArray BECOMES EMPTY
            arrayMatrixMultiply($old, $newArray);
        }
        return $newArray;
    }

    $newArray   = arrayMatrixMultiply($oldArray);

    var_dump($newArray);
    // PRODUCES::
    array (size=5)
      0 => int 672
      1 => int 168
      2 => int 56
      3 => int 7