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

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

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

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

Q&A

解決済

3回答

2397閲覧

PHP/連想配列から値を取る方法

qzkb4g1010

総合スコア21

PHP

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

0グッド

0クリップ

投稿2017/08/09 07:35

PHP上に、以下のような配列があったとします。

PHP

1Array ( [3] => Array( 2[0] => Array ( [id] => 1 [name] =>[no] => 6 ) 3[1] => Array ( [id] => 2 [name] =>[no] => 7 ) 4[2] => Array ( [id] => 3 [name] =>[no] => 8 ) 5[3] => Array ( [id] => 4 [name] =>[no] => 9 ) 6[4] => Array ( [id] => 5 [name] =>[no] => 10 ) 7) )

この配列の中から、 あ という文字と、 9 という数字を検索し表示する方法を教えていただきたいです。

PHP

1print_r(array_search('あ',$array));

この方法や、array_key、in_arrayも試しましたがどうも上手く抽出できません。

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

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

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

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

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

kei344

2017/08/09 07:43 編集

有った場合は何を返すのでしょうか。true/falseでしょうか。また複数ある場合はどのようになるのでしょうか。
m.ts10806

2017/08/09 07:49

PHP標準関数一発でということでしょうか、結果さえ同じであれば何かしら色々と介しても問題ないのでしょうか。
guest

回答3

0

array_searchとarray_columnを組み合わせるとできます。

php

1$ary = [ 2 ['id' => 1, 'name' => 'あ', 'no' => 6], 3 ['id' => 2, 'name' => 'い', 'no' => 7], 4 ['id' => 3, 'name' => 'う', 'no' => 8], 5 ['id' => 4, 'name' => 'え', 'no' => 9], 6 ['id' => 5, 'name' => 'お', 'no' => 10], 7]; 8$k1 = array_search('あ', array_column($ary, 'name')); 9$k2 = array_search(9, array_column($ary, 'no')); 10var_dump($ary[$k1]); 11var_dump($ary[$k2]);

投稿2017/08/09 08:03

naga3

総合スコア1293

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

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

anndonut

2017/08/10 11:40

確かにこの方法もすっきりしていていいですね。 しかし、「php多次元配列の検索」で指摘しているようにforeachで検索してやるのが一番スマートかも しれません。私のやり方だと関数オブジェクトを生成するし、naga3さんのやり方だと配列オブジェクトを 生成するからです。
guest

0

なんとなくですが、下記質問が参考になりそうに思います。

投稿2017/08/09 07:52

m.ts10806

総合スコア80850

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

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

0

ベストアンサー

答えになりそうなソースコードと実行結果を書きました。どうでしょうか?

php

1<?php 2$ary1[3] = [ 3 ['id' => 1, 'name' => 'あ', 'no' => 6], 4 ['id' => 2, 'name' => 'い', 'no' => 7], 5 ['id' => 3, 'name' => 'う', 'no' => 8], 6 ['id' => 4, 'name' => 'え', 'no' => 9], 7 ['id' => 5, 'name' => 'お', 'no' => 10]]; 8 9$ary2 = [ 10 ['id' => 1, 'name' => 'あ', 'no' => 6], 11 ['id' => 2, 'name' => 'い', 'no' => 7], 12 ['id' => 3, 'name' => 'う', 'no' => 8], 13 ['id' => 4, 'name' => 'え', 'no' => 9], 14 ['id' => 5, 'name' => 'お', 'no' => 10]]; 15 16$ary3 = [ 17 ['id' => 1, 'name' => 'い', 'no' => 6], 18 ['id' => 2, 'name' => 'い', 'no' => 7], 19 ['id' => 3, 'name' => 'あ', 'no' => 8], 20 ['id' => 4, 'name' => 'あ', 'no' => 9], 21 ['id' => 5, 'name' => 'あ', 'no' => 10]]; 22 23print('$ary1 = '); 24print_r($ary1); 25print('$ary2 = '); 26print_r($ary2); 27print('$ary3 = '); 28print_r($ary3); 29 30echo '$ary2の中でnameが「あ」であるものをフィルタリングする:', "\n"; 31print_r(array_filter($ary2, function($row){return $row['name'] === 'あ';})); 32echo '$ary2の中でnameが「あ」である要素を1つ取り出す:', "\n"; 33print_r( 34 array_values( 35 array_filter( 36 $ary2, 37 function($row){return $row['name'] === 'あ';}))[0]); 38echo '$ary2の中でnoが9である要素を1つ取り出す:', "\n"; 39print_r( 40 array_values( 41 array_filter( 42 $ary2, 43 function($row){return $row['no'] === 9;}))[0]); 44echo '$ary2の中でnameが「あ」、かつnoが9である要素の個数:'; 45echo 46 count( 47 array_filter( 48 $ary2, 49 function($row){return $row['name'] === 'あ' && $row['no'] === 9;})); 50echo "\n"; 51echo '$ary3の中でnameが「あ」、かつnoが9である要素の個数:'; 52echo 53 count( 54 array_filter( 55 $ary3, 56 function($row){return $row['name'] === 'あ' && $row['no'] === 9;})); 57echo "\n"; 58echo '$ary3の中でnameが「あ」、かつnoが9である要素を1つ取り出す:', "\n"; 59print_r( 60 array_values( 61 array_filter( 62 $ary3, 63 function($row){return $row['name'] === 'あ' && $row['no'] === 9;}) 64 )[0]); 65?>

text

1$ary1 = Array 2( 3 [3] => Array 4 ( 5 [0] => Array 6 ( 7 [id] => 1 8 [name] => あ 9 [no] => 6 10 ) 11 12 [1] => Array 13 ( 14 [id] => 2 15 [name] => い 16 [no] => 7 17 ) 18 19 [2] => Array 20 ( 21 [id] => 3 22 [name] => う 23 [no] => 8 24 ) 25 26 [3] => Array 27 ( 28 [id] => 4 29 [name] => え 30 [no] => 9 31 ) 32 33 [4] => Array 34 ( 35 [id] => 5 36 [name] => お 37 [no] => 10 38 ) 39 40 ) 41 42) 43$ary2 = Array 44( 45 [0] => Array 46 ( 47 [id] => 1 48 [name] => あ 49 [no] => 6 50 ) 51 52 [1] => Array 53 ( 54 [id] => 2 55 [name] => い 56 [no] => 7 57 ) 58 59 [2] => Array 60 ( 61 [id] => 3 62 [name] => う 63 [no] => 8 64 ) 65 66 [3] => Array 67 ( 68 [id] => 4 69 [name] => え 70 [no] => 9 71 ) 72 73 [4] => Array 74 ( 75 [id] => 5 76 [name] => お 77 [no] => 10 78 ) 79 80) 81$ary3 = Array 82( 83 [0] => Array 84 ( 85 [id] => 1 86 [name] => い 87 [no] => 6 88 ) 89 90 [1] => Array 91 ( 92 [id] => 2 93 [name] => い 94 [no] => 7 95 ) 96 97 [2] => Array 98 ( 99 [id] => 3 100 [name] => あ 101 [no] => 8 102 ) 103 104 [3] => Array 105 ( 106 [id] => 4 107 [name] => あ 108 [no] => 9 109 ) 110 111 [4] => Array 112 ( 113 [id] => 5 114 [name] => あ 115 [no] => 10 116 ) 117 118) 119$ary2の中でnameが「あ」であるものをフィルタリングする: 120Array 121( 122 [0] => Array 123 ( 124 [id] => 1 125 [name] => あ 126 [no] => 6 127 ) 128 129) 130$ary2の中でnameが「あ」である要素を1つ取り出す: 131Array 132( 133 [id] => 1 134 [name] => あ 135 [no] => 6 136) 137$ary2の中でnoが9である要素を1つ取り出す: 138Array 139( 140 [id] => 4 141 [name] => え 142 [no] => 9 143) 144$ary2の中でnameが「あ」、かつnoが9である要素の個数:0 145$ary3の中でnameが「あ」、かつnoが9である要素の個数:1 146$ary3の中でnameが「あ」、かつnoが9である要素を1つ取り出す: 147Array 148( 149 [id] => 4 150 [name] => あ 151 [no] => 9 152)

投稿2017/08/09 09:39

anndonut

総合スコア667

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問