2017-10-16 10 views
0

こんにちは、私の問題はこれです、私はjson形式のファイルを持っていて、このjsonファイルからPHPのjson_decode()をデコードしました。すべての定義要素を、関数の最後に返す変数に格納します。私は試しました関数内のforeachループ内の配列から値を返すにはどうすればいいですか?

function dictSearch(){ 
     $file = file_get_contents('wiki.json'); 
     $input = json_decode($file); 
     $ans = ''; 
     $error = 'No definition for that word'; 
     foreach ($input->results as $result){ 
      foreach ($result as $value=>$key){ 
       if ($value === 'definition'){ 
        $answer[] = $key.'\n'; 
       } 
      } 
     } 
     return print $answer; 
    } 

しかし、それは仕事をしません。 jsonファイルを見てください。私は何をしたいか

{ 
    "word": "rat", 
    "results": [ 
    { 
     "definition": "someone who works (or provides workers) during a strike", 
     "partOfSpeech": "noun", 
     "synonyms": [ 
     "blackleg", 
     "scab", 
     "strikebreaker" 
     ], 
     "typeOf": [ 
     "worker" 
     ] 
    }, 
    { 
     "definition": "a person who is deemed to be despicable or contemptible", 
     "partOfSpeech": "noun", 
     "synonyms": [ 
     "bum", 
     "crumb", 
     "dirty dog", 
     "git", 
     "lowlife", 
     "puke", 
     "rotter", 
     "scum bag", 
     "skunk", 
     "so-and-so", 
     "stinker", 
     "stinkpot" 
     ], 
     "typeOf": [ 
     "unpleasant person", 
     "disagreeable person" 
     ], 
     "examples": [ 
     "kill the rat" 
     ] 
    }, 
    { 
     "definition": "take the place of work of someone on strike", 
     "partOfSpeech": "verb", 
     "synonyms": [ 
     "blackleg", 
     "fink", 
     "scab" 
     ], 
     "typeOf": [ 
     "do work", 
     "work" 
     ], 
     "derivation": [ 
     "ratter" 
     ] 
    }, 
    { 
     "definition": "give away information about somebody", 
     "partOfSpeech": "verb", 
     "synonyms": [ 
     "betray", 
     "denounce", 
     "give away", 
     "grass", 
     "shit", 
     "shop", 
     "snitch", 
     "stag", 
     "tell on" 
     ], 
     "typeOf": [ 
     "inform" 
     ], 
     "hasTypes": [ 
     "sell someone out" 
     ], 
     "derivation": [ 
     "ratting", 
     "ratter" 
     ] 
    }, 
    { 
     "definition": "one who reveals confidential information in return for money", 
     "partOfSpeech": "noun", 
     "synonyms": [ 
     "betrayer", 
     "blabber", 
     "informer", 
     "squealer" 
     ], 
     "typeOf": [ 
     "source", 
     "informant" 
     ], 
     "hasTypes": [ 
     "nark", 
     "grass", 
     "fink", 
     "copper's nark", 
     "canary", 
     "sneak", 
     "sneaker", 
     "snitch", 
     "snitcher", 
     "stool pigeon", 
     "stoolie", 
     "stoolpigeon", 
     "supergrass" 
     ] 
    }, 
    { 
     "definition": "any of various long-tailed rodents similar to but larger than a mouse", 
     "partOfSpeech": "noun", 
     "typeOf": [ 
     "rodent", 
     "gnawer" 
     ], 
     "hasTypes": [ 
     "oryzomys palustris", 
     "mole rat", 
     "norway rat", 
     "brown rat", 
     "rice rat", 
     "rattus rattus", 
     "rattus norvegicus", 
     "roof rat", 
     "bandicoot rat", 
     "black rat", 
     "pocket rat", 
     "jerboa rat" 
     ], 
     "derivation": [ 
     "ratty" 
     ] 
    }, 
    { 
     "definition": "a pad (usually made of hair) worn as part of a woman's coiffure", 
     "partOfSpeech": "noun", 
     "typeOf": [ 
     "pad" 
     ], 
     "partOf": [ 
     "hairdo", 
     "coif", 
     "coiffure", 
     "hair style", 
     "hairstyle" 
     ] 
    }, 
    { 
     "definition": "catch rats, especially with dogs", 
     "partOfSpeech": "verb", 
     "typeOf": [ 
     "capture", 
     "catch" 
     ], 
     "derivation": [ 
     "ratter" 
     ] 
    }, 
    { 
     "definition": "desert one's party or group of friends, for example, for one's personal advantage", 
     "partOfSpeech": "verb", 
     "typeOf": [ 
     "desert", 
     "defect" 
     ], 
     "derivation": [ 
     "ratter" 
     ] 
    }, 
    { 
     "definition": "employ scabs or strike breakers in", 
     "partOfSpeech": "verb", 
     "inCategory": [ 
     "manufacture", 
     "industry" 
     ], 
     "typeOf": [ 
     "hire", 
     "engage", 
     "employ" 
     ], 
     "derivation": [ 
     "ratter" 
     ] 
    }, 
    { 
     "definition": "give (hair) the appearance of being fuller by using a rat", 
     "partOfSpeech": "verb", 
     "typeOf": [ 
     "fill out", 
     "pad" 
     ] 
    } 
    ], 
    "syllables": { 
    "count": 1, 
    "list": [ 
     "rat" 
    ] 
    }, 
    "pronunciation": { 
    "all": "ræt" 
    }, 
    "frequency": 4.49 
} 

はJSONファイルを反復処理し、

+1

なぜ '印刷の$ answer'を返します - なぜ 'プリント'? Btw:内側のforeach()の代わりに、より良いメソッドを見つけるべきです。 – clemens321

+1

** [完全な質問方法](https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)**や**についてのヒントをまずお読みください。 [最小、完全、および検証可能なサンプルを作成する方法](https://stackoverflow.com/help/mcve)**あなたの質問に応じて編集して、より多くの人をあなたの投稿に引き付けます。 –

+0

あなたのjsonは悪いです、それは一重引用符を含んでいます – miknik

答えて

1

あなたはarray_columnを見つけることが、私は私の機能からリターンにできるようにすることができます変数に定義のすべての値を格納していますとても便利な。それはあなたが(online sandbox)を取得しますあなたの特定の「列」の値を持つ配列(配列のすなわち要素)

function dictSearch(){ 
    $file = file_get_contents('wiki.json'); 
    $input = json_decode($file, 1); // force array 
    return array_column($file['results'], 'definition'); 
} 

を返します。

array(11) { 
    [0]=> 
    string(55) "someone who works (or provides workers) during a strike" 
    [1]=> 
    string(55) "a person who is deemed to be despicable or contemptible" 
    [2]=> 
    string(43) "take the place of work of someone on strike" 
    [3]=> 
    string(36) "give away information about somebody" 
    [4]=> 
    string(60) "one who reveals confidential information in return for money" 
    [5]=> 
    string(69) "any of various long-tailed rodents similar to but larger than a mouse" 
    [6]=> 
    string(63) "a pad (usually made of hair) worn as part of a woman's coiffure" 
    [7]=> 
    string(32) "catch rats, especially with dogs" 
    [8]=> 
    string(81) "desert one's party or group of friends, for example, for one's personal advantage" 
    [9]=> 
    string(34) "employ scabs or strike breakers in" 
    [10]=> 
    string(57) "give (hair) the appearance of being fuller by using a rat" 
} 
+1

私はちょうど答えを投稿しようとしていましたが、これは非常にきちんとしています。 +1 – fubar

関連する問題