php
1$arrData = [ 2 ['row' => 0, 'price' => 4860], 3 ['row' => 0, 'price' => 4860], 4 ['row' => 0, 'price' => NULL], 5 ['row' => 0, 'price' => 3840], 6 ['row' => 0, 'price' => 3840], 7 ['row' => 0, 'price' => 4520], 8 ['row' => 0, 'price' => 3610], 9 ['row' => 0, 'price' => NULL], 10 ['row' => 0, 'price' => 3380] 11];
上記の配列の'price'が同じ値、またはNULLが連続している場合にその連続する数を'row'に格納したいです。
連続しているかの判断条件は同じ値、もしくはNULLです。
最終的には以下のようにしたいです。
php
1$arrData = [ 2 ['row' => 3, 'price' => 4860], 3 ['row' => 0, 'price' => 4860], 4 ['row' => 0, 'price' => NULL], 5 ['row' => 2, 'price' => 3840], 6 ['row' => 0, 'price' => 3840], 7 ['row' => 1, 'price' => 4520], 8 ['row' => 2, 'price' => 3610], 9 ['row' => 0, 'price' => NULL], 10 ['row' => 1, 'price' => 3380] 11];
foreachでループさせればいいのかと思ったのですが、望む結果が得られませんでした。
よろしくお願い致します。
追記:ソース
php
1foreach($arrData AS $key => $value) { 2 $row = 0; 3 foreach($arrData AS $key2 => $value2) { 4 if ($key >= $key2) continue; 5 if (is_null($value2['price']) || $value2['price'] == $value['price']) { 6 $row++; 7 } 8 } 9 $arrData[$key]['row']= $row; 10}
出力結果
php
1$arrData = [ 2 ['row' => 3, 'price' => 4860], 3 ['row' => 2, 'price' => 4860], 4 ['row' => 1, 'price' => NULL], 5 ['row' => 2, 'price' => 3840], 6 ['row' => 1, 'price' => 3840], 7 ['row' => 1, 'price' => 4520], 8 ['row' => 1, 'price' => 3610], 9 ['row' => 0, 'price' => NULL], 10 ['row' => 0, 'price' => 3380] 11];
回答2件
あなたの回答
tips
プレビュー