phpの重複チェック
phpで配列の重複データをチェックして、重複しているデータを表示しようとしています。
foreach ($arry as $key => $value) {
$err_count = 0;
foreach ($arry as $key => $value2) {
if ($value == $value2) {
$err_count++;
if ($err_count >= 2) {
echo "重複".$value2;
}
}
}
}
としているのですが、
同じモノが2回表示されて困っています。
重複しているデータは一回だけ表示したいのですが、
なにか方法ないでしょうか?
No.1ベストアンサー
- 回答日時:
>if ($value == $value2) {
この$valueと$value2の中身が文字列の場合「==」を使うのは駄目だよ。
>foreach ($arry as $key => $value) {
>foreach ($arry as $key => $value2) {
$keyを上書きする理由は?
普通なら
foreach ($arry as $key1 => $value) {
foreach ($arry as $key2 => $value2) {
としようよ
そもそも添字をを拾ってきているんだからそれを有効活用しないと。
「===」もしくはstrcmp()関数を使おうね。
それと
>if ($value == $value2) {
> $err_count++;
> if ($err_count >= 2) {
> echo "重複".$value2;
> }
>}
なんて変な書き方する?
ものすごく効率悪いと思わない?
if($value === $value2 && $key1!==$key2){
これ一つですむのでは?
それと何故「2」だけが全角?
この回答への補足
valueとkeyには別の名前が入っていたので、
こちらにのせるため変更したときに、混同してしまいました。
すみません。
例えば、(a,b,c,a)とデータがあった時に、
ひとつめのループが最初のaを、ふたつめのループがイコールで、
ヒットしたものをメッセージで出力します。
そして、ひとつめのループ最後のaに入った時、もう一度、
メッセージが表示されてしまうのですが。
No.6
- 回答日時:
よく考えればユニークして差分をとるだけですね
<?
$arry=Array("a","b","a","c","b","a");
$arry2=array_unique(array_diff_assoc($arry,array_unique($arry)));
foreach($arry2 as $val) echo "重複".$val;
?>
No.5
- 回答日時:
修正したら下記のようになります。
foreach (array_unique($arry) as $value) {
$err_count = 0;
foreach ($arry as $value2) {
if ($value == $value2) {
$err_count++;
}
}
if ($err_count >= 2) {
echo "重複".$value.PHP_EOL;
}
}
書き直すと下記のようになります。
foreach (array_count_values($arry) as $key => $value) {
if ($value >= 2) {
echo "重複".$key.PHP_EOL;
}
}
No.4
- 回答日時:
重複データが3つ以上ある場合をどうするのでしょうか?
考え方としては、都度走査するか、チェッカーを使うのが妥当かと
<?
$arry=Array("a","b","c","a","b","a");
while(count($arry)){
$value=array_shift($arry);
if(array_search($value,$arry)) echo "重複".$value;
}
?>
<?
$arry=Array("x","y","z","x","z","x");
$check=Array();
foreach($arry as $value){
if(isset($check[$value])) echo "重複".$value;
else $check[$value]=true;
}
?>
No.2
- 回答日時:
>ひとつめのループが最初のaを、ふたつめのループがイコールで、
>ヒットしたものをメッセージで出力します。
>そして、ひとつめのループ最後のaに入った時、もう一度、
>メッセージが表示されてしまうのですが。
アルゴリズムのヒント。
ゲームなんかの総当たりの対戦表や九九(全部ではなくて半分だけで行う方法)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) フォーム上のリストボックスに重複して表示しています 3 2022/10/19 11:55
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウンリンクを外部ファイ...
-
連動させたいセレクトボックス...
-
複数のセレクトボックスを1つに...
-
複数 selectフォームから今回on...
-
phpで重複チェック
-
PHPでユーザー情報を入力して簡...
-
ボタンをクリックでPHP文を実行
-
【HTML(PHP?)】複数のフォーム...
-
HTMLで前の画面に戻る時、入力...
-
コードの何が間違っているのか...
-
phpの問題でIF文を用いて、成績...
-
laravelを利用してコントロール...
-
<input type="hidden" >で配列...
-
複数のラジオボタングループを...
-
フォーム送信後の更新ボタンで...
-
検索時の選択内容を保持する方法
-
フォームへの前回入力値をクリ...
-
PHPのエラーの解消法について教...
-
チェックボックスの初期選択と...
-
PHPでチェックボックスの内容を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
連動させたいセレクトボックス...
-
<select>文、foreachと初期値設定
-
セレクトしたときに全て初期状...
-
2つのプルダウンメニュから受け...
-
【PHP&JavaScript】複数の別ウ...
-
プルダウンで選択された値を保持
-
ループでチェックボックスにche...
-
MySQLのレコードを検索、...
-
チェックボックスで渡ってきた...
-
複数のセレクトボックスで
-
phpでのselect値の取得・表記に...
-
データベースから年月日を抽出...
-
phpで重複チェック
-
PHP プルダウンメニュー MYSQL
-
[Ethna]selectボックスに空値を...
-
「"」(ダブルクォーテーション)...
-
複数 selectフォームから今回on...
-
phpでのセレクトボックスの値を...
-
PHP で画面の一部だけを変えたい。
-
チェックボックス&セレクトボ...
おすすめ情報