2017-03-13 5 views
0

私はオックスフォード辞書APIを使用して自分のウェブサイトで辞書機能を開発しています。私は単語を検索してAPIから結果を引き出すことができるので、この関数をうまく実装しました。しかし、私はこれらのデータをMySQLデータベースに保存することに問題があります。php - APIから複雑な多次元データをデータベースに保存する

Array 
(
[metadata] => Array 
    (
     [provider] => Oxford University Press 
    ) 

[results] => Array 
    (
     [0] => Array 
      (
       [id] => love 
       [language] => en 
       [lexicalEntries] => Array 
        (
         [0] => Array 
          (
           [entries] => Array 
            (
             [0] => Array 
              (
               [etymologies] => Array 
                (
                 [0] => Old English lufu, of Germanic origin; from an Indo-European root shared by Sanskrit lubhyati ‘desires’, Latin libet ‘it is pleasing’, libido ‘desire’, also by leave and lief 
                ) 

               [grammaticalFeatures] => Array 
                (
                 [0] => Array 
                  (
                   [text] => Mass 
                   [type] => Countability 
                  ) 

                ) 

               [homographNumber] => 000 
               [senses] => Array 
                (
                 [0] => Array 
                  (
                   [definitions] => Array 
                    (
                     [0] => a strong feeling of affection 
                    ) 

                   [examples] => Array 
                    (
                     [0] => Array 
                      (
                       [text] => their love for their country 
                      ) 

                     [1] => Array 
                      (
                       [text] => babies fill parents with intense feelings of love 
                      ) 

                    ) 

                   [id] => m_en_gbus0596690.007 
                   [subsenses] => Array 
                    (
                     [0] => Array 
                      (
                       [definitions] => Array 
                        (
                         [0] => a strong feeling of affection and sexual attraction for someone 
                        ) 

                       [examples] => Array 
                        (
                         [0] => Array 
                          (
                           [text] => they were both in love with her 
                          ) 

                         [1] => Array 
                          (
                           [text] => we were slowly falling in love 
                          ) 

                        ) 

                       [id] => m_en_gbus0596690.009 
                      ) 

                     [1] => Array 
                      (
                       [definitions] => Array 
                        (
                         [0] => affectionate greetings conveyed to someone on one's behalf 
                        ) 

                       [examples] => Array 
                        (
                         [0] => Array 
                          (
                           [text] => give her my love 
                          ) 

                        ) 

                       [id] => m_en_gbus0596690.010 
                      ) 

                     [2] => Array 
                      (
                       [definitions] => Array 
                        (
                         [0] => a formula for ending an affectionate letter 
                        ) 

                       [examples] => Array 
                        (
                         [0] => Array 
                          (
                           [text] => take care, lots of love, Judy 
                          ) 

                        ) 

                       [id] => m_en_gbus0596690.011 
                      ) 

                     [3] => Array 
                      (
                       [definitions] => Array 
                        (
                         [0] => a personified figure of love, often represented as Cupid. 
                        ) 

                       [domains] => Array 
                        (
                         [0] => Roman History 
                        ) 

                       [id] => m_en_gbus0596690.012 
                       [variantForms] => Array 
                        (
                         [0] => Array 
                          (
                           [text] => Love 
                          ) 

                        ) 

                      ) 

                    ) 

                  ) 

                 [1] => Array 
                  (
                   [definitions] => Array 
                    (
                     [0] => a great interest and pleasure in something 
                    ) 

                   [examples] => Array 
                    (
                     [0] => Array 
                      (
                       [text] => his love for football 
                      ) 

                     [1] => Array 
                      (
                       [text] => we share a love of music 
                      ) 

                    ) 

                   [id] => m_en_gbus0596690.016 
                  ) 

                 [2] => Array 
                  (
                   [definitions] => Array 
                    (
                     [0] => a person or thing that one loves 
                    ) 

                   [examples] => Array 
                    (
                     [0] => Array 
                      (
                       [text] => she was the love of his life 
                      ) 

                     [1] => Array 
                      (
                       [text] => their two great loves are tobacco and whisky 
                      ) 

                    ) 

                   [id] => m_en_gbus0596690.018 
                   [notes] => Array 
                    (
                     [0] => Array 
                      (
                       [text] => count noun 
                       [type] => grammaticalNote 
                      ) 

                    ) 

                   [subsenses] => Array 
                    (
                     [0] => Array 
                      (
                       [definitions] => Array 
                        (
                         [0] => a friendly form of address 
                        ) 

                       [examples] => Array 
                        (
                         [0] => Array 
                          (
                           [text] => it's all right, love 
                          ) 

                        ) 

                       [id] => m_en_gbus0596690.021 
                       [regions] => Array 
                        (
                         [0] => British 
                        ) 

                       [registers] => Array 
                        (
                         [0] => informal 
                        ) 

                      ) 

                     [1] => Array 
                      (
                       [definitions] => Array 
                        (
                         [0] => used in affectionate requests 
                        ) 

                       [examples] => Array 
                        (
                         [0] => Array 
                          (
                           [text] => don't fret, there's a love 
                          ) 

                        ) 

                       [id] => m_en_gbus0596690.022 
                       [notes] => Array 
                        (
                         [0] => Array 
                          (
                           [text] => "a love" 
                           [type] => wordFormNote 
                          ) 

                        ) 

                       [registers] => Array 
                        (
                         [0] => informal 
                        ) 

                      ) 

                    ) 

                  ) 

                 [3] => Array 
                  (
                   [definitions] => Array 
                    (
                     [0] => (in tennis, squash, and some other sports) a score of zero; nil 
                    ) 

                   [domains] => Array 
                    (
                     [0] => Tennis 
                    ) 

                   [examples] => Array 
                    (
                     [0] => Array 
                      (
                       [text] => love fifteen 
                      ) 

                    ) 

                   [id] => m_en_gbus0596690.024 
                  ) 

                ) 

              ) 

            ) 

           [language] => en 
           [lexicalCategory] => Noun 
           [pronunciations] => Array 
            (
             [0] => Array 
              (
               [audioFile] => http://audio.oxforddictionaries.com/en/mp3/love_gb_1.mp3 
               [dialects] => Array 
                (
                 [0] => British English 
                ) 

               [phoneticNotation] => IPA 
               [phoneticSpelling] => lʌv 
              ) 

            ) 

           [text] => love 
          ) 

         [1] => Array 
          (
           [entries] => Array 
            (
             [0] => Array 
              (
               [grammaticalFeatures] => Array 
                (
                 [0] => Array 
                  (
                   [text] => Transitive 
                   [type] => Subcategorization 
                  ) 

                ) 

               [homographNumber] => 001 
               [senses] => Array 
                (
                 [0] => Array 
                  (
                   [definitions] => Array 
                    (
                     [0] => feel deep affection or sexual love for (someone) 
                    ) 

                   [examples] => Array 
                    (
                     [0] => Array 
                      (
                       [text] => do you love me? 
                      ) 

                    ) 

                   [id] => m_en_gbus0596690.026 
                   [subsenses] => Array 
                    (
                     [0] => Array 
                      (
                       [definitions] => Array 
                        (
                         [0] => like or enjoy very much 
                        ) 

                       [examples] => Array 
                        (
                         [0] => Array 
                          (
                           [text] => I just love dancing 
                          ) 

                         [1] => Array 
                          (
                           [text] => I'd love a cup of tea 
                          ) 

                        ) 

                       [id] => m_en_gbus0596690.032 
                      ) 

                    ) 

                  ) 

                ) 

              ) 

            ) 

           [language] => en 
           [lexicalCategory] => Verb 
           [pronunciations] => Array 
            (
             [0] => Array 
              (
               [audioFile] => http://audio.oxforddictionaries.com/en/mp3/love_gb_1.mp3 
               [dialects] => Array 
                (
                 [0] => British English 
                ) 

               [phoneticNotation] => IPA 
               [phoneticSpelling] => lʌv 
              ) 

            ) 

           [text] => love 
          ) 

        ) 

       [type] => headword 
       [word] => love 
      ) 

    ) 

) 

私のウェブサイト上で結果を出しエコー:

これは私print_r($dic_array)のときに私が得るものです

foreach($dic_array['results'][0]['lexicalEntries'] as $word) { 
     echo '<hr><div class="partOfSpeech"><p><b>'.$word['lexicalCategory'].'</b></p></div>'; 
      foreach($word['entries'][0]['senses'] as $definition) { 
       echo '<p class="definition">'.$definition['definitions'][0].'</p>'; 

       if (!empty($definition['subsenses'])) { 
        foreach($definition['subsenses'] as $subsenses) { 
         echo '<p class="subDefinition" style="padding-left: 10px; "> -'.$subsenses['definitions'][0].'</p>'; 
        } 
       } 
      } 
    }  
+1

配列で 'json_encode'を使用すると、文字列に変換してDBに保存できます。取得する際には、 'json_decode'を使用できます。 – TedRed

+0

APIからですか?自分自身からデータを取得するためにどのようなAPIが作られていないのですか?私は 'mysqli'や' PDO'も見ていません。 – PHPglue

+0

一般的には、例を意味のある文字数に切り捨てる方が良いです。試したソースコードで回答を作成しないでください。 – velop

答えて

0

はこれが答えではありません。私はこの質問をする著者です。私は30000文字以上を書くことができないので、私はここでいくつかの追加のコンテンツを使用します。

これは私が試したものです:

foreach($dic_array['results'][0]['lexicalEntries'] as $word) { 
      $lexicalCategory = serialize($word['lexicalCategory']); 

      foreach($word['entries'][0]['senses'] as $definition) { 
       $wordDefinition = serialize($definition['definitions'][0]); 

       if (!empty($definition['subsenses'])) { 
        foreach($definition['subsenses'] as $subsenses) { 
         $wordSubdefinition = serialize($subsenses['definitions'][0]); 

         if(!empty($_POST['save'])) { 
          $sth = $this->db->prepare('INSERT INTO dictionary 
             (`word`, `partOfSpeech`, `definition`, `subDefinition`) 
             VALUES (:word, :partOfSpeech, :definition, :subDefinition) 
             '); 

          $sth->execute(array(
           ':word' => $data['word'], 
           ':partOfSpeech' => $lexicalCategory, 
           ':definition' => $wordDefinition, 
           ':subDefinition' => $wordSubdefinition 
          ));    
         } 

        } 
       } 
      } 

     } 

私はそれがあまりにも入れ子になっている知っているが、私はこれを成し遂げることができたら、私はいくつかの機能にこれを分離します。

関連する問題