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

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

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

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

Q&A

解決済

1回答

542閲覧

PHP 配列のキーを指定した読み方を教えてください。

saya24

総合スコア221

PHP

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

0グッド

0クリップ

投稿2019/02/21 06:55

編集2019/02/21 06:58

下記配列の中から、「tcd」と「scd」のキーを指定して、
2つのキーが合致するレコードの、キー「sperson」の値を戻すFUNCTIONを作りたいです。

欲をいうと重複行は取り除き、カンマ区切りで戻すFUNCTIONにしたいです。

PHP

1var_dump($rows); 2//結果 3array (size=7) 4 0 => 5 array (size=06) 6 'acttype' => string '更新' (length=6) 7 'exrno' => string '0000006001・002' (length=16) 8 'exrlno' => string '002' (length=3) 9 'tcd' => string 'I73131' (length=6) 10 'scd' => string 'J32536' (length=6) 11 'sperson' => string 'スピルパーク' (length=18) 12 1 => 13 array (size=06) 14 'acttype' => string '更新' (length=6) 15 'exrno' => string '0000006001・001' (length=16) 16 'acttype' => string '更新' (length=6) 17 'exrlno' => string '001' (length=3) 18 'tcd' => string 'I73131' (length=6) 19 'scd' => string 'J32536' (length=6) 20 'sperson' => string 'スピルパーク' (length=18) 21 2 => 22 23 'exrno' => string '0000006125・001' (length=16) 24 'exrlno' => string '001' (length=3) 25 'tcd' => string 'I74129' (length=6) 26 'scd' => string 'I74129' (length=6) 27 'sperson' => string 'そんたくろう' (length=18) 28 3 => 29 array (size=06) 30 'acttype' => string '更新' (length=6) 31 'exrno' => string '0000006125・002' (length=16) 32 'exrlno' => string '002' (length=3) 33 'tcd' => string 'I74129' (length=6) 34 'scd' => string 'I74129' (length=6) 35 'sperson' => string 'そんたくろう' (length=18) 36 4 => 37 array (size=06) 38 'acttype' => string '更新' (length=6) 39 'exrno' => string '0000006126・001' (length=16) 40 'exrlno' => string '002' (length=3) 41 'tcd' => string 'I73131' (length=6) 42 'scd' => string 'J32536' (length=6) 43 'sperson' => string '今夜が山田!' (length=18) 44 5 => 45 array (size=06) 46 'acttype' => string '更新' (length=6) 47 'exrno' => string '0000006126・002' (length=16) 48 'exrlno' => string '002' (length=3) 49 'tcd' => string 'I73131' (length=6) 50 'scd' => string 'J32536' (length=6) 51 'sperson' => string '今夜が山田!' (length=18) 52 6 => 53 array (size=06) 54 'acttype' => string '更新' (length=6) 55 'exrno' => string '0000006126・003' (length=16) 56 'exrlno' => string '002' (length=3) 57 'tcd' => string 'I73131' (length=6) 58 'scd' => string 'J32536' (length=6) 59 'sperson' => string '今夜が山田!' (length=18)

例えば、下記指定のfunction実行では、
"スピルパーク,今夜が山田!,"
を戻すようなことをしたいです。

PHP

1test($rows,'I73131','J32536'); 2FUNCTION test($rows,$tcd,$scd){ 3 // どういったコーディング?? 4}

配列も引数で指定できることが 今分かったレベルです。
ヒントだけでも良いので ご教示をよろしくお願いします。

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

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

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

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

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

m.ts10806

2019/02/21 06:58

データ配列で提示されたいのでしたらvar_dump()よりvar_export()のほうが回答する側としてはありがたいです。
m.ts10806

2019/02/21 07:00

同じspersonを返すtcdとscdの組み合わせが複数あるようですが、その場合はどうするのでしょうか。
ttyp03

2019/02/21 07:01

>「tcd」と「scd」のキーを指定して、 細かい指摘ですが、この配列の場合、"tcd"と"scd"がキー値になっていますので、 「tcd」と「scd」の値を指定して、の方が適切な文章ですね。
saya24

2019/02/21 08:01

>同じspersonを返すtcdとscdの組み合わせが複数あるようですが、その場合はどうするのでしょうか 重複行は 取り除きます。”スピルパーク,今夜が山田!,”が希望の戻り値です。
guest

回答1

0

ベストアンサー

php

1function test($arr, $tcd, $scd) { 2 $ret = []; 3 foreach($arr as $item) { 4 if($item["tcd"] !== $tcd) continue; 5 if($item["scd"] !== $scd) continue; 6 if(in_array($item["sperson"], $ret, true)) continue; 7 $ret[] = $item["sperson"]; 8 } 9 return $ret; 10} 11echo implode(",",test($rows,'I73131','J32536'));

投稿2019/02/21 07:06

編集2019/02/21 08:35
papinianus

総合スコア12705

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

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

saya24

2019/02/21 08:01

Arrayと帰ってきました...。
papinianus

2019/02/21 08:36

`echo test($rows,'I73131','J32536');`ってやったら「Arrayと帰ってきました...。」という意味だと理解して、回答に出力方法を追記しました。 もし、コメントの意図が違うのであれば、どう出力したらArrayとなったかを教えてください。
saya24

2019/02/21 09:39 編集

ご支援をありがとうございます。無事目的が達成されました。何から何まですみません。戻したい内容を連結で考えた場合、やはりループするのが良さそうですね。
papinianus

2019/02/21 09:40

DBだったらSQLでやったほうが早い気がする
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問