2012-02-03 21 views
0

私は、第1次元値の同様の値に基づいて、配列の第2次元の値を処理するPHPコードを記述しようとしています。類似の第1次元値に基づいて配列の2次元を処理する方法は?

次は出力例です。

[0] => Array (
      [0] => 1 
      [1] => 0.091238491238491 
     ) 
[1] => Array (
      [0] => 2 
      [1] => 0.2221793635487 
     ) 
[2] => Array (
      [0] => 2 
      [1] => 0.10662717512033 
     ) 
[3] => Array (
      [0] => 4 
      [1] => 0.44354338998346 
     ) 
[4] => Array (
      [0] => 6 
      [1] => 0.2248243559719 
     ) 
[5] => Array (
      [0] => 6 
      [1] => 0.31764705882353 
     ) 
[6] => Array (
      [0] => 6 
      [1] => 0.15764625384879 
     ) 
[7] => Array (
      [0] => 6 
      [1] => 0.19160083160083 
     ) 
[8] => Array (
      [0] => 12 
      [1] => 0.31054875069499 
     ) 
[9] => Array (
      [0] => 12 
      [1] => 0.10915034227918 
     ) 
[10] => Array (
      [0] => 15 
      [1] => 0.32915461266474 
     ) 
//...........goes to 46000 elements 

ここで、各配列のインデックス0の値が似ている場合、インデックス1の値を追加します。 たとえば、4つの配列のインデックス値が同じ場合は、すべての4つの配列のインデックス1の値を追加します。 0番目のインデックスに一意の値がある場合は、何も追加しないでください。単にインデックス1の値を格納して移動してください。

ありがとうございました。 Ghanshyam

+0

*その配列をフォーマットしてください。どの次元が何であるかを見ることは不可能です... – deceze

+0

@deceze、今私たちはコードを見ることができます:) –

+0

@deceze:今すぐ見てください – Nerd

答えて

2
$added = array(); 
foreach ($array as $item) { 
    if (isset($added[$item[0]])) { 
     $added[$item[0]] += $item[1]; 
    } else { 
     $added[$item[0]] = $item[1]; 
    } 
} 
+0

0番目のインデックスの値が配列要素は同じかどうかそれらが同じ場合、それらの配列に対応する1番目のインデックス値を追加する必要があります。例えば。 [1] =>配列([0] => 2 [1] => 0.2221793635487) [2] =>配列([0] => 2 [1] => 0.10662717512033) ここで[ [1] [0]と[2] [0]は同じであるため、[1] [1]と[2] [1] – Nerd

+0

これはまさにこれがやっていることです。 '[0]'インデックスを別の配列のキー*として使用しています。 – deceze

+0

$ added [$ item [0]] = $ added [$ item [0]] + $ item [1]; これは私に致命的なエラーを与えています:のサポート対象外のオペランドタイプ<> アレイを追加しようとしているのですか? $ added [$ item [0]]と$ item [1]は配列です – Nerd

0
$p=0; 
$temp = $final_prod_ex[0][1]; 
for($x=0; $x<count($final_prod)-1; $x++){ 
    if($final_prod_ex[$x][0]==$final_prod_ex[$x+1][0]){ 
     $temp = $temp + $final_prod_ex[$x+1][1]; 
    } 
    else{ 
     $ans[$p] = $temp." ".$final_prod_ex[$x][0]; 
     $temp = $final_prod_ex[$x+1][1]; 
     $p++; 
    } 
} 

は最後にアレイの名前が$ final_prod_exです...(私はプログラミングに新しいです)思考の多くの後にそれを考え出しました。私がそれをより良くすることができるなら、これについてコメントしてください。と申し訳ありません@deceze。私はあなたの解決策を理解できませんでした。ある配列の値を別の配列のインデックスとして与えることを試みていたことは分かっています。しかし、シナリオは何ですか、その値は0,1,2,3,4 ....のようなものではありません。そのような1,3,5,6,7,10。間に数字がありません。たぶん私はあなたの解決策を理解できませんでした。私が間違っているなら、私を訂正してください。 ありがとうございました。

関連する問題