예제 #1
0
 /**
  * MMULT
  *
  * @param	array	$matrixData1	A matrix of values
  * @param	array	$matrixData2	A matrix of values
  * @return	array
  */
 public static function MMULT($matrixData1, $matrixData2)
 {
     $matrixAData = $matrixBData = array();
     if (!is_array($matrixData1)) {
         $matrixData1 = array(array($matrixData1));
     }
     if (!is_array($matrixData2)) {
         $matrixData2 = array(array($matrixData2));
     }
     try {
         $rowA = 0;
         foreach ($matrixData1 as $matrixRow) {
             if (!is_array($matrixRow)) {
                 $matrixRow = array($matrixRow);
             }
             $columnA = 0;
             foreach ($matrixRow as $matrixCell) {
                 if (!is_numeric($matrixCell) || $matrixCell === null) {
                     return PHPExcel_Calculation_Functions::VALUE();
                 }
                 $matrixAData[$rowA][$columnA] = $matrixCell;
                 ++$columnA;
             }
             ++$rowA;
         }
         $matrixA = new PHPExcel_Shared_JAMA_Matrix($matrixAData);
         $rowB = 0;
         foreach ($matrixData2 as $matrixRow) {
             if (!is_array($matrixRow)) {
                 $matrixRow = array($matrixRow);
             }
             $columnB = 0;
             foreach ($matrixRow as $matrixCell) {
                 if (!is_numeric($matrixCell) || $matrixCell === null) {
                     return PHPExcel_Calculation_Functions::VALUE();
                 }
                 $matrixBData[$rowB][$columnB] = $matrixCell;
                 ++$columnB;
             }
             ++$rowB;
         }
         $matrixB = new PHPExcel_Shared_JAMA_Matrix($matrixBData);
         if ($columnA != $rowB) {
             return PHPExcel_Calculation_Functions::VALUE();
         }
         return $matrixA->times($matrixB)->getArray();
     } catch (PHPExcel_Exception $ex) {
         var_dump($ex->getMessage());
         return PHPExcel_Calculation_Functions::VALUE();
     }
 }
예제 #2
0
 /**
  * MMULT
  *
  * @param	array	$matrixData1	A matrix of values
  * @param	array	$matrixData2	A matrix of values
  * @return	array
  */
 public static function MMULT($matrixData1, $matrixData2)
 {
     $matrixAData = $matrixBData = array();
     if (!is_array($matrixData1)) {
         $matrixData1 = array(array($matrixData1));
     }
     if (!is_array($matrixData2)) {
         $matrixData2 = array(array($matrixData2));
     }
     $rowA = 0;
     foreach ($matrixData1 as $matrixRow) {
         $columnA = 0;
         foreach ($matrixRow as $matrixCell) {
             if (is_string($matrixCell) || $matrixCell === null) {
                 return PHPExcel_Calculation_Functions::VALUE();
             }
             $matrixAData[$rowA][$columnA] = $matrixCell;
             ++$columnA;
         }
         ++$rowA;
     }
     try {
         $matrixA = new PHPExcel_Shared_JAMA_Matrix($matrixAData);
         $rowB = 0;
         foreach ($matrixData2 as $matrixRow) {
             $columnB = 0;
             foreach ($matrixRow as $matrixCell) {
                 if (is_string($matrixCell) || $matrixCell === null) {
                     return PHPExcel_Calculation_Functions::VALUE();
                 }
                 $matrixBData[$rowB][$columnB] = $matrixCell;
                 ++$columnB;
             }
             ++$rowB;
         }
         $matrixB = new PHPExcel_Shared_JAMA_Matrix($matrixBData);
         if ($rowA != $columnB || $rowB != $columnA) {
             return PHPExcel_Calculation_Functions::VALUE();
         }
         return $matrixA->times($matrixB)->getArray();
     } catch (Exception $ex) {
         return PHPExcel_Calculation_Functions::VALUE();
     }
 }