何かを達成するために失敗しましたか?これは、あなたが探しているものであれば
$words = array(
'word1' => array(
'meaning' => 'word1 meaning',
'synonyms' => array(
'word1 synonym1',
'word1 synonym2'
),
'antonyms' => array(
'word1 antonym1',
'word1 antonym2'
)
),
'word2' => array(
'meaning' => 'word2 meaning',
'synonyms' => array(
'word2 synonym1',
'word2 synonym2'
),
'antonyms' => array(
'word2 antonym1',
'word2 antonym2'
)
)
);
は、あなたが利用可能なあらゆるデータソースから動的な配列を作成するために非常に簡単です。これは、もちろん非常に単純である
+----------+
+---------+ | synonyms |
| words | +----------+
+---------+ | id |
| id | -+-> | word_id |
| word | | | synonym |
| meaning | | +----------+
+---------+ |
| +----------+
| | antonyms |
| +----------+
| | id |
\-> | word_id |
| antonym |
+----------+
は、あなたがsynonyms
に重複がたくさんあるとされます:あなたは、あなたの質問にその情報を提供していないので、あなたがこのような構造だMySQLデータベースを持っていると仮定しましょうこの構成のテーブルantonyms
。
標準PDO
またはmysqli
機能を使用して、データベースから情報を取得できます。あなたのデータソースが実際にMySQLデータベースであるかどうかは明らかではないので、私はmysqli
と仮定し、この例では非常に基本的なクエリを使用します。結局のところ、ここでの目的はデータベースと安全に通信する方法を教えることではなく、json_encode()
を通過できる多次元配列を構築する方法です。
$words = array();
$mysqli = new mysqli(...);
// retrieve the list of words from the `words` table
$words_res = $mysqli->query('SELECT * FROM `words`');
while ($word = $words_res->fetch_assoc()) {
// build the initial sub-array for this word, we'll be adding
// it to $words after we fill it
$word_array = array(
'meaning' => $word['meaning'],
'synonyms' => array(),
'antonyms' => array()
);
// retrieve all synonyms for this word
$synonyms_res = $mysqli->query('SELECT * FROM `synonyms` WHERE `word_id` = ' . $word['id']);
while ($synonym = $synonyms_res->fetch_assoc()) {
// add this synonym to our $word_array
$word_array['synonyms'][] = $synonym['synonym'];
}
// retrieve all antonyms for this word
$antonyms_res = $mysqli->query('SELECT * FROM `antonyms` WHERE `word_id` = ' . $word['id']);
while ($antonym = $antonyms_res->fetch_assoc()) {
// add this antonym to our $word_array
$word_array['antonyms'][] = $antonym['antonym'];
}
// now that $word_array is filled, we can add it to $words
$words[$word['word']] = $word_array;
}
// since you say you want a JSON result, convert the array to
// JSON and output it
echo json_encode($words);
回答ありがとうございますが、これらのフィールドを追加または更新する方法はありますか? –
@MithunSudheendran私は、 – rickdenhaan
WOWの例を追加しました。あなたは、OPが求めていた以上の優れた答えを書くために少なくともupvoteを取得する必要があります。いくつかの改善点があります(例 - プリペアドステートメントの使用)が、OPが学ばなければならないものです。よくやった! –