![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
下記のような配列が二つあります。
1 $array1 = Array ( [0] => 20 [1] => 22 )
2 $array2 = Array ( [0] => 20 [1] => 22 [2] => 18 [3] => 19 )
array_intersect関数を使い、
この配列を比較して、重複している値を取り出したいのですが、
どうしてもできません。
$intersect = array_intersect($array1,$array2);
print_r($intersect);
としましたが、だめです。根本的な構造が違うのか?
または他の方法があるのか?
ご教授お願いします。
No.4ベストアンサー
- 回答日時:
print_r()で区別がつかないのであれば、var_dump()でより詳しく
見ていってはどうでしょうか?
var_dump($array1);
var_dump($array2);
var_dump($intersect);
この回答への補足
早速、チェックボックスからデータベースへの登録部分をチェックしてみました。結果、
$op_no .= "<input type='checkbox' name='opno[]' value=' $opno '>$opno$subject<br>";
上のvalue=' $opno 'の部分に左右に半角スペースが入っていたのを無しにしてみたら
■array(2) { [0]=> string(2) "20" [1]=> string(2) "22" }
■array(4) { [0]=> string(2) "20" [1]=> string(2) "22" [2]=> string(2) "18" [3]=> string(2) "19" }
■array(2) { [0]=> string(2) "20" [1]=> string(2) "22" }
となりました。var_dumpを教えて頂かなければ、まったく考えていなかった部分なので気づくことはなかったと思います。今後多用したいと思います。ありがとうございました。一週間も考えていましたが、その間にたくさんのことを勉強できたのが良かったです。
またkoke29さんの回答も大変参考になりました。また次回もよろしくお願いいたします。
本当に助かりました!
yambejpさん、ありがとうございました。
var_dumpで表示してみた所、下記のようになりました。
文字数が4文字と2文字になっていることが判明しました。
値の前後に半角スペースが入っているようです。
データベースへの登録時に間違いがあるようなので、もう一度確認してみます。恥ずかしながらvar_dumpは初めて使いましたが、詳しく調べるのには最適ですね。
明日もう一度、手直しして結果を報告させていただきます。
■var_dump($array1);
array(2) { [0]=> string(4) " 20 " [1]=> string(4) " 22 " }
■var_dump($array2);
array(4) { [0]=> string(2) "20" [1]=> string(2) "22" [2]=> string(2) "18" [3]=> string(2) "19" }
■var_dump($intersect);
array(0) { }
また、koke29さん、親切なご回答ありがとうございました。
このような事に気をつけなければ!と再確認させていただきました。
一度チェックさせて頂きます。参考になりました。
No.3
- 回答日時:
なんか全然違うこと書いちゃいましたね スミマセン。
$array2はDBから呼び出しているとのことと、
Array ( [0] => 20 [1] => 22 )
Array ( [0] => 20 [1] => 22 [2] => 18 [3] => 19 )
ここまでは表示出来ているとのことなので
array_intersect の入れる場所がダメなのでは?と思いました
DBデータの展開にはforとかを使っていると思うのですが
array_intersectの記述がforの外に出ているとか
また外していたらスミマセン。
私がよくこういう間違いをしていたので、もしやと思いまして。
No.2
- 回答日時:
$array1 = array("20","18","19","22") ;
$array2 = array("20","22");
$array3 = array_diff($array1,$array2);
print_r($array3);
これで Array ( [1] => 18 [2] => 19 ) の値が取れました。
ただ配列のキーが元の配列のままになってしまうのでこれだと更に加工が
必要になるのかもしれませんね。
他にもっといい方法がありそうな感じがしますが、とりあえず。
No.1
- 回答日時:
>$intersect = array_intersect($array1,$array2);
>print_r($intersect);
>としましたが、だめです。
<?
$array1 = Array(20,22);
$array2 = Array (20,22,18,19);
$intersect = array_intersect($array1,$array2);
print_r($intersect);
?>
で、「Array ( [0] => 20 [1] => 22 ) 」が出力されないのでしょうか?
その場合、どのような結果が出力されているのでしょうか?
それともそれが期待した結果ではないのでしょうか?
その場合はどういう結果を期待しているのでしょうか?
koke29さん、yambejpさん、ありがとうございます。
こちらの表示ではArray()となってしまいます。
詳しく説明すると、$array1は商品登録時にチェックボックスを使い
MySQLへsirialize関数を使って格納し、それをunsirializeして表示したものです。$array2はMysqlから主キーfetch_arrayで取り出して、配列にしたものです。
両方ともin_arrayで値が入っているか確認したので、配列になっていると思うのですが、どうしてもarray_intersectで取り出すことができません。そもそもデータベースの格納時点で構造などが違っているのでしょうか?
Array ( [0] => 20 [1] => 22 )
Array ( [0] => 20 [1] => 22 [2] => 18 [3] => 19 )
ここまでは表示できたのですが、お手上げ状態です。
すみませんが、ご教授お願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- その他(プログラミング・Web制作) listへのappendが出来ない件 1 2022/12/06 21:44
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- JavaScript java keyを配列で表記したい 10 2022/12/01 17:53
- Visual Basic(VBA) 型が一致しませんとエラー 6 2023/07/06 20:14
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
行列
-
fgetc関数について
-
Perlで重複行を削除したい
-
PHPで10連ガチャを作成したいの...
-
verilogで、配列の一部をタスク...
-
class内部でarray_mapをつかう...
-
php で1から100までの素数の表...
-
プログラミングのPythonのnoteb...
-
CArrayの要素としてCStringArra...
-
配列の比較
-
foreachの実行結果について
-
PHPでユニークIDを作る
-
テーブルの項目内に「含まれる...
-
プルダウンメニューにDBの内容...
-
配列をループでたくさん宣言し...
-
PHPで、CSVファイルを、指定し...
-
foreachで上限回数指定方法また...
-
$_SESSIONに二次元配列を使える...
-
別ファイルの構造体の値を読み...
-
SELECT 使用時の bindValue の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングのPythonのnoteb...
-
スカラーのベクトル微分
-
特定の文からメールアドレスの...
-
CArrayの要素としてCStringArra...
-
C言語 最大値と最小値を求めて...
-
行列
-
読み(あ行~わ行)ごとに分け...
-
配列の要素(value)に、変数を...
-
C言語の配列をPush(追加)する...
-
STLのvectorで作った配列をメン...
-
php で1から100までの素数の表...
-
【PHP】配列のキー名の修正は可...
-
Perlで重複行を削除したい
-
fgetc関数について
-
CArrayのソート
-
ファイルの書き込みについて教...
-
配列の添え字が小数だとどうなる?
-
PHPのmin関数、「1」以上の数値...
-
forとかで連番の変数を一気に格...
-
delphi 2次元配列がわかりません
おすすめ情報