我如何返回数组中的函数内部的foreach循环中的值
问题描述:
好日子人,我的问题是这样的,我有一个json格式文件,我用php的json_decode()
从这个json文件解码我想迭代通过它并将所有的定义元素存储在我将在我的函数结束时返回的变量中。我试过我如何返回数组中的函数内部的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文件迭代和定义的所有值存储在其中,我可以能够从我的功能回报可变
答
您可能会发现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
为什么'返回打印$ answer' - 为什么要打印?顺便说一句:你应该找到一个更好的方法,而不是内部的foreach()。 – clemens321
我建议你先阅读一些有关** [如何提出完美问题](https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)**和** [如何创建一个最小化,完整和可验证的示例](https://*.com/help/mcve)**然后相应地编辑您的问题,以吸引更多人到您的文章。 –
你的json不好,它包含单引号 – miknik