• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2つの配列/キーが一致する際、要素数の出現回数を求)

2つの配列/キーが一致する際、要素数の出現回数を求める方法

このQ&Aのポイント
  • 2つの配列があり、かつキーが一致する際、要素数の出現回数を求める方法を解説します。
  • 具体的な例として、「Array a」と「Array b」が与えられた場合、「Array b」の要素が1の場合と1以外の場合で、「Array a」の値の出現回数を求める手順を説明します。
  • 計算結果を示す「Array c」と「Array d」の例も記載されています。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

配列に関して何度か質問されているようですが、今までの内容は理解されていますか? 今現在はどういうソースを書いているのか(どこまで出来ているのか)くらいは提示すべきじゃないかと思います。でないと「丸投げを繰り返すヤツ」と思われてしまいます(実際そうだということであれば仕方ないですが・・・)。 基本的な配列の扱い方が理解出来ていれば、とりあえずは「力仕事」で書いても難しくはないと思います。 <?php $arr_a = array(1,2,2,1,3,1,2,2,3,1); $arr_b = array(0,1,0,1,1,1,1,0,2,1); $arr_c = array(); foreach ($arr_b as $key=>$val) { if ($val !== 1) { continue; } $i = $arr_a[$key]; if (!array_key_exists($i, $arr_c)) { $arr_c[$i] = 0; } $arr_c[$i]++; } ksort($arr_c); // 見易くする print "<pre>"; print_r($arr_c); print "</pre>"; $arr_d = array(); foreach ($arr_b as $key=>$val) { if ($val === 1) { continue; } // 違いはここだけ $i = $arr_a[$key]; if (!array_key_exists($i, $arr_d)) { $arr_d[$i] = 0; } $arr_d[$i]++; } ksort($arr_d); print "<pre>"; print_r($arr_d); print "</pre>";

re999
質問者

補足

回答ありがとうございました。 >if (!array_key_exists($i, $arr_c)) { $arr_c[$i] = 0; } これは何をしているのでしょうか? コメントアウトすると、Noticeエラー(Undefined index)になるのですが、なぜでしょうか? このエラーは、配列の添え字(ここでは $i?)が未定義の際、出るものだと認識しているのですが、 $arr_c[$i] = 0; と値へ0を格納することで、なんで「Noticeエラー」が出なくなるのでしょうか? また、参考までに、否定ではなくて、if (array_key_exists で書くと、どうなるでしょうか?

関連するQ&A

専門家に質問してみよう