-1

以下代码从搜索引擎返回一个带有 url、title 和片段的关联数组,它工作正常

$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,依此类推,下面的代码吐出来的和上面的一样。因此,我似乎无法在数组中添加“得分”,任何想法。回复

$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);
4

2 回答 2

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建议

$blekkoArray[$i]['score'] = $score--;
于 2013-07-20T12:43:26.813 回答
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--;
}
于 2013-07-20T12:44:34.620 回答