2012-10-05 32 views
0

嗨具有以下的數組:PHP操作數

Array 
    (
    [0] => Array 
     (
     [SERIAL] => 1 
     [SCORE_1] => 6.6490630173025 
     [SCORE_2] => 13.010510864225 
     [SCORE_3] => 7.5543177306323 
     [SCORE_4] => 4.1576775823101 
     [SCORE_5] => 5.3696604808987 
    ) 

    [1] => Array 
     (
     [SERIAL] => 2 
     [SCORE_1] => 11.861835175219 
     [SCORE_2] => 0 
     [SCORE_3] => 1.988806017442 
     [SCORE_4] => 0.97387338276326 
     [SCORE_5] => 4.0322016758707 
    ) 

我需要找到其陣列中的每個元件的即例如SCORE_1 /(SCORE_1 + ... + SCORE_5)和連續保持的比例原樣。 PHP代碼看起來像這樣:

$r = -1; 
$namedDataArray = array(); 

for ($row = 2; $row <= $highestRow; ++$row) { 
$dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true,    true, true); 
if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) { 
    ++$r; 
    foreach($headingsArray as $columnKey => $columnHeading) { 

     if($dataRow[$row][$columnKey]==0){ 

     $namedDataArray[$r][$columnHeading] = 0; 

     }elseif($columnHeading=='SERIAL'){ 

       $namedDataArray[$r][$columnHeading]=$dataRow[$row][$columnKey]; 
      } else { 
       $x=(float)1.35; 
       $a=pow($dataRow[$row][$columnKey],$x); 

       $namedDataArray[$r][$columnHeading] = $a; 
      } 

     } 
    } 
} 



echo '<pre>'; 

print_r($namedDataArray); 

echo '</pre><hr />'; 

我還是一個PHP的新手,一直在努力與這一個。我使用PHPExcel讀取文件並將每個元素提升到1.35的大小。我已經使用$total=array_sum($namedDataArray),但是當我嘗試劃分即$Score= $namedDataArray/$total時,它表示不支持的操作數類型。

回答

0

在此行中:

$Score= $namedDataArray/$total 

$namedDataArray是一個數組。 PHP不允許您使用數組執行分區,您必須輸入一個數字,例如$Score = $namedDataArray[0]['SCORE_1']/$total

+0

如果您實際提供瞭解決方案,這將有所幫助。你只是重複他已經得到的錯誤消息。 – Zulakis

+0

作者似乎不明白爲什麼顯示錯誤消息。 '它說不支持的操作數類型',我沒有看到像「不能用數字劃分數組」的內容。這就好像你錯過了「;」在一行的結尾,並得到噸錯誤,而不是「你錯過了;」。 –

+0

好吧我看到我們在哪裏得到,所以我需要通過列循環,我現在怎麼'改變'['SCORE _ *']',以便他們成爲列索引,而不是$ namedDataArray [0 ] ['SCORE_1]它會像$ namedDataArray [0] [1]等等 – user1237190