以下代码返回一个关联数组,其中包含来自搜索引擎的url,title和snippet,并且工作正常
$js = json_decode($data);
$blekkoArray = array();
$find = array ('http://','https://','www.');
foreach ($js->RESULT as $item)
{
$blekkoArray[$i]['url'] = str_replace ($find, '', ($item->{'url'}) );
$blekkoArray[$i]['title'] = ($item->{'url_title'});
$blekkoArray[$i]['snippet'] = ($item->{'snippet'});
$i++;
}
print_r ($blekkoArray);
我正在尝试向数组添加另一个值,以便我可以对每个元素进行评分,例如。我希望第一个结果得分为100,第二个结果为99,第三个结果为98,依此类推,下面的代码与上面的相同。所以我似乎无法在数组中添加“得分”,任何想法。 Reagrds
$js = json_decode($data);
$blekkoArray = array();
$find = array ('http://','https://','www.');
foreach ($js->RESULT as $item)
{
$score = 100;
$blekkoArray[$i]['url'] = str_replace ($find, '', ($item->{'url'}) );
$blekkoArray[$i]['title'] = ($item->{'url_title'});
$blekkoArray[$i]['snippet'] = ($item->{'snippet'});
$blekkoArray[$i]['score'];
$i++;
$score--;
}
print_r ($blekkoArray);
答案 0 :(得分:1)
你犯了2个错误。
1)你已经在foreach循环中初始化$score
,它应该在外面,否则你总是得到$ score = 100.
2)你没有在数组中分配$ score,
$score = 100; // move the initialization of $score outside of loop
foreach ($js->RESULT as $item)
{
$blekkoArray[$i]['url'] = str_replace ($find, '', ($item->{'url'}) );
$blekkoArray[$i]['title'] = ($item->{'url_title'});
$blekkoArray[$i]['snippet'] = ($item->{'snippet'});
$blekkoArray[$i]['score'] = $score; // assign the $score value here
$i++;
$score--;
}
u_mulder 建议OR
$blekkoArray[$i]['score'] = $score--;
答案 1 :(得分:1)
将$score = 100;
置于foreach数组之外。你将它重置为每个循环100。
并使用
$blekkoArray[$i]['score'] = $score--;
或两行相同:
$blekkoArray[$i]['score'] = $score;
$score--;
接下来,你不能在foreach中使用键吗?像这样?这只是猜测,因为我不知道$i
是什么。它没有在你的代码中定义或初始化,所以......
还有一点奖励修改:如果你没有将变量用作字段名,$var->{'fieldname'}
符号可以简化为$var->fieldname
。
总之,这是给出以下代码:
$score = 100;
foreach ($js->RESULT as $i => $item)
{
$blekkoArray[$i]['url'] = str_replace ($find, '', $item->url);
$blekkoArray[$i]['title'] = $item->url_title;
$blekkoArray[$i]['snippet'] = $item->snippet;
$blekkoArray[$i]['score'] = $score--;
}