简体   繁体   English

PHP Foreach循环仅显示最后的结果

[英]PHP Foreach loop only displaying last result

I am having a bit of trouble with some code where in an array I have a list of 2 and the function is only displaying the last in the list. 我在一些代码中遇到了一些麻烦,在数组中我有一个2的列表,该函数只显示列表中的最后一个。

Here is the code: 这是代码:

<?php


  function getKeywordPosition($theurl,$thekeywords) {

    $theurl = $theurl;
    $thekeywords = $thekeywords;

    $found = false;
    $x = 0;

    for($x; $x < 64 && $found == false;)
{
    $url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&"
    . "q=".stripslashes(str_replace(' ', '%20', $thekeywords)).'&start='.$x;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_REFERER, 'http://www.boo.com');
    $body = curl_exec($ch);
    curl_close($ch);

    $json = json_decode($body);

    $x4 = $x + 4;
    $old_x = $x;

    for($x; $x < $x4 && $found == false; $x = $x + 1)
        {

            if (strpos($json->responseData->results[$x-$old_x]->unescapedUrl, strtolower($theurl)) !== false) 
            {
                $found = true;
            }

        }

        // now have some fun with the results...
    }

    if($found)
    {
        echo '<strong>'.$theurl.'</strong> is located as the <strong>'.$x.'</strong> result when searching for <strong>'.stripslashes($thekeywords).'</strong>';
        echo '<br>';
    }

  }


    $list = array('php.com'=>'php', 'php.com'=>'php');

    foreach($list as $key => $value){

        getKeywordPosition($key,$value);

    }



?>

Why is this not working properly? 为什么这不能正常工作?

Unless this is a badly contrived example, then th issue is you have duplicate keys in your array: 除非这是一个设计糟糕的例子,否则问题是你的数组中有重复的键:

$list = array('php.com'=>'php', 'php.com'=>'php');

This array has a single entry 该数组只有一个条目

You coud refactor like so: 你这样做重构:

$list = array(

    array('url'=>'php.net', 'keyword'=>'php'),
    array('url'=>'php.net', 'keyword'=>'arrays'),
    array('url'=>'php.net', 'keyword'=>'anotherkeyword')
    );


foreach($list as $entry){

    getKeywordPosition($entry['url'], $entry['keyword']);

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM