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ページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
有った場合は何を返すのでしょうか。true/falseでしょうか。また複数ある場合はどのようになるのでしょうか。
2017/08/09 07:49
PHP標準関数一発でということでしょうか、結果さえ同じであれば何かしら色々と介しても問題ないのでしょうか。
回答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
総合スコア1293
0
なんとなくですが、下記質問が参考になりそうに思います。
投稿2017/08/09 07:52
総合スコア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
総合スコア667
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。