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

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

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

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

Q&A

解決済

2回答

921閲覧

多次元配列でのキーの取得方法

joshin-cloud

総合スコア5

PHP

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

0グッド

0クリップ

投稿2020/02/20 10:14

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
多次元配列で指定の値だった場合のキーを取得したいです。
例えば以下のコードの['point']が4だった場合のキーを文字列として取得したいです。

該当のソースコード

<?php $aryShindan =[]; $cnt = 1; $aryShindan[$cnt]['question'] = 'a?'; $aryShindan[$cnt]['answer'][] = ['point' => 4, 'text' => 'あ']; $aryShindan[$cnt]['answer'][] = ['point' => 3, 'text' => 'い']; $aryShindan[$cnt]['answer'][] = ['point' => 2, 'text' => 'う']; $aryShindan[$cnt]['answer'][] = ['point' => 1, 'text' => 'え']; $cnt = 2; $aryShindan[$cnt]['question'] = 'b?'; $aryShindan[$cnt]['answer'][] = ['point' => 4, 'text' => 'お']; $aryShindan[$cnt]['answer'][] = ['point' => 3, 'text' => 'か']; $aryShindan[$cnt]['answer'][] = ['point' => 2, 'text' => 'き']; $aryShindan[$cnt]['answer'][] = ['point' => 1, 'text' => 'く']; $cnt = 3; $aryShindan[$cnt]['question'] = 'c?'; $aryShindan[$cnt]['answer'][] = ['point' => 4, 'text' => 'け']; $aryShindan[$cnt]['answer'][] = ['point' => 3, 'text' => 'こ']; $aryShindan[$cnt]['answer'][] = ['point' => 2, 'text' => 'さ']; $aryShindan[$cnt]['answer'][] = ['point' => 1, 'text' => 'し'];

試したこと

array_search関数を試してみましたが、うまくいきませんでした。
恐れ入りますがご教授いただけると幸いです。

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

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

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

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

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

yambejp

2020/02/20 10:23 編集

> ['point']が4だった場合のキー 具体的に何が返ってくる想定でしょうか? pointが4である親のキーである[0,0,0]ですか?
m.ts10806

2020/02/20 10:40

>array_search関数を試してみましたが、うまくいきませんでした。 そのコードを提示されないと何とも。
退会済みユーザー

退会済みユーザー

2020/02/20 10:50

コピペで使えるコードをくれ、と? 4なら4っていっぱいあるけど、それ全部ほしいの?
guest

回答2

0

ベストアンサー

ドクダンとヘンケンでチョーカイシャクして
こんな感じ?

php

1//$aryShindan の定義は省略 2 3function get_text($answer, $point) { 4 foreach ($answer as $a) { 5 if ($a['point'] == $point) { 6 return $a['text']; 7 } 8 } 9 return ''; 10} 11 12echo get_text($aryShindan[1]['answer'], 4);

本当にキーが欲しいんだったら for 文にして
インデックスを返せばいいですけど…
それは意味が分かりません。

具体的にやりたいことを質問に追記してもらえたら
もっと具体的にアドバイスがつくと思います。

投稿2020/02/20 12:43

takasima20

総合スコア7460

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

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

退会済みユーザー

退会済みユーザー

2020/02/20 12:54

そう、どういう結果がほしいのか意味わからんので、せっかく書いたコードも意味ないかもしれない不安
guest

0

array_*系使ってないけど、素直に書けば、こう。

php

1<?php 2 3$aryShindan =[]; 4 5$cnt = 1; 6$aryShindan[$cnt]['question'] = 'a?'; 7$aryShindan[$cnt]['answer'][] = ['point' => 4, 'text' => 'あ']; 8$aryShindan[$cnt]['answer'][] = ['point' => 3, 'text' => 'い']; 9$aryShindan[$cnt]['answer'][] = ['point' => 2, 'text' => 'う']; 10$aryShindan[$cnt]['answer'][] = ['point' => 1, 'text' => 'え']; 11 12$cnt = 2; 13$aryShindan[$cnt]['question'] = 'b?'; 14$aryShindan[$cnt]['answer'][] = ['point' => 4, 'text' => 'お']; 15$aryShindan[$cnt]['answer'][] = ['point' => 3, 'text' => 'か']; 16$aryShindan[$cnt]['answer'][] = ['point' => 2, 'text' => 'き']; 17$aryShindan[$cnt]['answer'][] = ['point' => 1, 'text' => 'く']; 18 19$cnt = 3; 20$aryShindan[$cnt]['question'] = 'c?'; 21$aryShindan[$cnt]['answer'][] = ['point' => 4, 'text' => 'け']; 22$aryShindan[$cnt]['answer'][] = ['point' => 3, 'text' => 'こ']; 23$aryShindan[$cnt]['answer'][] = ['point' => 2, 'text' => 'さ']; 24$aryShindan[$cnt]['answer'][] = ['point' => 1, 'text' => 'し']; 25 26//var_export($aryShindan); 27 28foreach (array_keys($aryShindan) as $i) { 29 for ($j = 0; $j < count($aryShindan[$i]['answer']); ++$j) { 30 if ($aryShindan[$i]['answer'][$j]['point'] == 4) { // point == 4 なら 31 echo '$i = ' . $i . ', $j = ' . $j . PHP_EOL; 32 } 33 } 34}

投稿2020/02/20 11:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問