php - 将复杂的多维数据从API保存到数据库中

时间:2017-03-13 04:04:23

标签: php mysql arrays

我正在使用牛津字典API在我的网站上开发字典功能。我已成功实现该功能,因为我可以搜索单词并从API中提取结果。但是,我将这些数据保存到MySQL数据库时遇到了问题。

这是我在print_r($dic_array)时得到的:

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
            )

    )

)

在我的网站上回显结果:

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 个答案:

答案 0 :(得分: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
                            ));             
                        }

                    }
                }
            }

        }

我知道它太套了但是一旦我完成了这个,我会把它分成几个函数。