在2d关联数组中添加值

时间:2013-07-20 12:40:34

标签: php arrays

以下代码返回一个关联数组,其中包含来自搜索引擎的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);

2 个答案:

答案 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--;
}