質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1162閲覧

配列の差分に関して

MasanoriTakaki

総合スコア24

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/11/16 19:27

###質問内容
SQLで抽出したデータ($varArrayA)とフォームに送信された配列($varArrayB)で差分を出したいと思っています。
検索で「array_diff_key」を試してみたのですが、下記の結果になってしまいます。
下記の実際に出したい結果の値を出したいのですが、記述がわかりません。
よろしくお願いします。
###データ内容

SQL抽出 $varArrayA = array(4) { [0]=> array(1) { ["h_code"]=> string(8) "xzqwjqgu" } [1]=> array(1) { ["h_code"]=> string(8) "4dvn612p" } [2]=> array(1) { ["h_code"]=> string(8) "yb6hr3vr" } [3]=> array(1) { ["h_code"]=> string(8) "tx2h89pw" } } ; フォームに送信された配列 $varArrayB = array(3) { [0]=> string(8) "xzqwjqgu" [1]=> string(8) "yb6hr3vr" [2]=> string(8) "tx2h89pw" };

###該当のソースコード

php

1array_diff_key($varArrayA,$varArrayB);

###結果

string(8) "tx2h89pw"

###実際に出したい結果

string(8) "4dvn612p"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

array_diffを使えばいいだけでは。

投稿2016/11/17 00:09

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

array_diff_keyだとキー同士の比較になるので今回の例ではうまくいかないと思います。

h_codeのみ取れればいいよ版 ( array_column + array_diff )

php

1$records = [ 2 ['h_code' => 'xzqwjqgu'], 3 ['h_code' => '4dvn612p'], 4 ['h_code' => 'yb6hr3vr'], 5 ['h_code' => 'tx2h89pw'], 6]; 7$inputs = ['xzqwjqgu', 'yb6hr3vr', 'tx2h89pw']; 8 9$codes = array_column($records, 'h_code'); 10$result = array_diff($codes, $inputs); 11 12// array (size=1) 13// 1 => string '4dvn612p' (length=8) 14var_dump($result);

実はh_code以外にも項目あったよ版 ( array_filter )

php

1$records = [ 2 ['h_code' => 'xzqwjqgu', 'name' => 'hoge'], 3 ['h_code' => '4dvn612p', 'name' => 'fuga'], 4 ['h_code' => 'yb6hr3vr', 'name' => 'piyo'], 5 ['h_code' => 'tx2h89pw', 'name' => 'hogera'], 6]; 7$inputs = ['xzqwjqgu', 'yb6hr3vr', 'tx2h89pw']; 8 9$result = array_filter($records, function ($record) use ($inputs) { 10 return (! in_array($record['h_code'], $inputs, true)); 11}); 12 13// array (size=1) 14// 1 => 15// array (size=2) 16// 'h_code' => string '4dvn612p' (length=8) 17// 'name' => string 'fuga' (length=4) 18var_dump($result);

参考

PHP: array_column - Manual
http://php.net/manual/ja/function.array-column.php

PHP: array_diff - Manual
http://php.net/manual/ja/function.array-diff.php

PHP: array_filter - Manual
http://php.net/manual/ja/function.array-filter.php

投稿2016/11/16 20:45

nnssn

総合スコア1221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasanoriTakaki

2016/11/17 16:25

ありがとうございました。 無事解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問