###前提
- PHP : 5.4.16
実現したいこと
下記のjsonから"month"キーで検索をし、データを抽出したいです。
json
1[ 2 { 3 "month": "201706", 4 "status": "committed", 5 "card": { 6 "number": "8107-7454-4526-5963 ", 7 "name": "佐藤 哲夫", 8 "joined_at": "2016年10月3日", 9 "bank": "新生銀行", 10 "store": "本店", 11 "kind": "普通", 12 "bank_number": "1352***", 13 "card_kind": "カート" 14 }, 15 "payment": { 16 "price": "199", 17 "detail": { 18 "date": "17/04/30", 19 "store": "まいばすけっと 板橋駅南/iD", 20 "price": "199", 21 "kubun": "1", 22 "thistime": "1", 23 "payed_price": "199", 24 "user_name": "佐藤 哲夫", 25 "use_card": "6900-11**-****-1***" 26 } 27 } 28 }, 29 { 30 "month": "201707", 31 "status": "uncommitted", 32 "card": { 33 "number": "4444-7454-4526-5963 ", 34 "name": "内藤 たかし", 35 "joined_at": "2015年12月23日", 36 "bank": "三井住友銀行", 37 "store": "本店", 38 "kind": "普通", 39 "bank_number": "1352***", 40 "card_kind": "カート" 41 }, 42 "payment": { 43 "price": "199", 44 "detail": { 45 "date": "17/04/30", 46 "store": "ファミマ 板橋駅南/iD", 47 "price": "199", 48 "kubun": "1", 49 "thistime": "1", 50 "payed_price": "199", 51 "user_name": "佐藤 哲夫", 52 "use_card": "6900-11**-****-1***" 53 } 54 } 55 }, 56 { 57 "month": "201708", 58 "status": "uncommitted", 59 "card": { 60 "number": "8888-7454-4526-5963 ", 61 "name": "8月 たかし", 62 "joined_at": "2015年12月23日", 63 "bank": "三井住友銀行", 64 "store": "本店", 65 "kind": "普通", 66 "bank_number": "1352***", 67 "card_kind": "カート" 68 }, 69 "payment": { 70 "price": "199", 71 "detail": { 72 "date": "17/04/30", 73 "store": "ファミマ 板橋駅南/iD", 74 "price": "199", 75 "kubun": "1", 76 "thistime": "1", 77 "payed_price": "199", 78 "user_name": "佐藤 哲夫", 79 "use_card": "6900-11**-****-1***" 80 } 81 } 82 }, 83 { 84 "month": "201709", 85 "status": "uncommitted", 86 "card": { 87 "number": "9999-7454-4526-5963 ", 88 "name": "9月 たかし", 89 "joined_at": "2015年12月23日", 90 "bank": "三井住友銀行", 91 "store": "本店", 92 "kind": "普通", 93 "bank_number": "1352***", 94 "card_kind": "カート" 95 }, 96 "payment": { 97 "price": "199", 98 "detail": { 99 "date": "17/04/30", 100 "store": "ファミマ 板橋駅南/iD", 101 "price": "199", 102 "kubun": "1", 103 "thistime": "1", 104 "payed_price": "199", 105 "user_name": "佐藤 哲夫", 106 "use_card": "6900-11**-****-1***" 107 } 108 } 109 } 110]
例
検索キー:”201708”
返却値:※arrayでもobjectでもなんでもいいです。
{ "month": "201708", "status": "uncommitted", "card": { "number": "8888-7454-4526-5963 ", "name": "8月 たかし", "joined_at": "2015年12月23日", "bank": "三井住友銀行", "store": "本店", "kind": "普通", "bank_number": "1352***", ("card_kind": "カート") }, "payment": { "price": "199", "detail": { "date": "17/04/30", "store": "ファミマ 板橋駅南/iD", "price": "199", "kubun": "1", "thistime": "1", "payed_price": "199", "user_name": "佐藤 哲夫", "use_card": "6900-11**-****-1***" } } }
###試したこと
php
1function getData($ym){ 2 $json = file_get_contents('hoge.json'); 3 4 $data = json_decode($json, true); 5 $key = array_search($ym,array_column($data, 'month')); 6 7 if ($key === false) { 8 return false; 9 } 10 return $data[$key]; 11} 12 13$ym = '201708'; 14$data = getData($ym); 15
発生する問題
現行のPHPのバージョン(5.4.16)では array_column()
が利用できないようでした。
###補足情報(言語/FW/ツール等のバージョンなど)
array_column()
と同等の機能を実装したファンクションも見つけましたが、もっとシンプルな方法はないかと質問させていただきました。
なにか良い方法はないでしょうか?
現行のバージョンで対応するのは難しいとのことであれば、諦めて別の処理を実装するつもりです。
ご意見いただければ幸いです。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/22 01:02
2017/06/22 01:55