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

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

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

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

Q&A

解決済

2回答

377閲覧

PHPの配列で、子要素ごとに孫要素の数を数えたい

ykthrn

総合スコア5

PHP

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

0グッド

0クリップ

投稿2023/10/17 08:53

実現したいこと

下記の配列があります。
3の数をそれぞれ数えたいです。

A : 1
B : 2
D : 0

という結果が欲しいです。

PHP

1Array 2( 3 [A] => Array 4 ( 5 [0] => 3 6 [1] => 2 7 [2] => 1 8 ) 9 10 [B] => Array 11 ( 12 [0] => 3 13 [1] => 3 14 [2] => 0 15 ) 16 17 [D] => Array 18 ( 19 [0] => 2 20 [1] => 2 21 [2] => 2 22 ) 23 24)

該当のソースコード

PHP

1foreach ($array as $key => $value) { 2 foreach ($value as $key2 => $value2) { 3 $new_array = $value; 4 } 5 6 $result3[$key] = array_filter($new_array, function($val3) { 7 return $val3 === '3'; 8 }); 9} 10 11foreach ($result3 as $key3 => $value3) { 12 $test = count($result3, COUNT_RECURSIVE) - count($result3); 13}

試したこと

array_filterで3だけをフィルタリングして、その数を数えることはできました。
しかし、Aでは〇個、Bでは〇個、という結果の出し方がわかりませんでした。

PHP

1echo '<pre>カウント:<br>'; 2print_r($test); 3echo '</pre>';

↓表示結果

カウント: 3

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

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

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

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

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

guest

回答2

0

PHP

1<?PHP 2$a=[ 3 "A"=>[3,2,1], 4 "B"=>[3,3,0], 5 "D"=>[2,2,2], 6 ]; 7$num=3; 8$b=array_map(function($x) use($num){ 9 return count(array_filter($x,function($x) use($num){ 10 return $x==$num; 11 })); 12},$a); 13print_r($b); 14 15$c=array_map(function($x,$y){ 16 return $x."は".$y."個"; 17},array_keys($b),$b); 18print_r($c); 19 20print implode("\n",$c);

投稿2023/10/18 00:48

yambejp

総合スコア117728

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

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

0

自己解決

foreachの中でechoしたらできました。

PHP

1foreach ($result3 as $key3 => $value3) { 2 $test = count($result3[$key3], COUNT_RECURSIVE); 3 echo '<pre>カウント:'.$key3.'<br>'; 4 print_r($test); 5 echo '</pre>'; 6}

↓表示結果

カウント:A 1 カウント:B 2 カウント:D 0

投稿2023/10/17 09:07

ykthrn

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問