使用函数中创建的变量

时间:2012-01-29 15:09:50

标签: php scope

我正在使用简单的html DOM并从网站中提取两个链接。

function get_links($website) {
$html = file_get_html($website);   
$img = $html->find('div.entry img',0)->src;  
$url = $html->find('div.entry a',0)->href;}

运行get_links函数后如何使用$ img和$ url?

4 个答案:

答案 0 :(得分:4)

您有两种选择。首先是返回它们:

function get_links($website) {
    $html = file_get_html($website);   
    $img = $html->find('div.entry img',0)->src;  
    $url = $html->find('div.entry a',0)->href;
    return array('img' => $img, 'url' => $url);
}

您只能从函数返回一个值,因此您必须创建一个数组。

另一种选择是通过引用来获取参数:

function get_links($website, &$img, &$url) {
    $html = file_get_html($website);   
    $img = $html->find('div.entry img',0)->src;  
    $url = $html->find('div.entry a',0)->href;
}

当你调用它时,你可以提供两个值,其中包含值:

get_links($someurl, $image, $url);
echo $image; // echoes the image source
echo $url; // echoes the url

我希望第一种技术(数组)更简单。

您还有其他选择:您可以将$img$url设为全局。这是一个坏主意。您也可以将get_links定义为匿名函数并使用use关键字,但我认为这不太有用。您还可以将该函数封装在对象中:

class Links {
    public $url;
    public $img;

    function __construct($website) 
        $html = file_get_html($website);   
        $this->img = $html->find('div.entry img',0)->src;  
        $this->url = $html->find('div.entry a',0)->href;
    }
}

// elsewhere
$links = new Links($someurl);
$links->img;
$links->url;
}

答案 1 :(得分:1)

您可以将它们作为数组返回:

return array(
    'img'  => $img,
    'url'    => $url
);

答案 2 :(得分:0)

有不同的方式:

  • 将它们返回给调用者(作为数组)
  • 在不同范围的光学镜片中将它们声明为
  • 声明他们全局
  • 等等

考虑更符合您目标的解决方案。

答案 3 :(得分:0)

您的功能仅部分完成。您需要将这些值返回到调用源以供在那里使用。从函数返回多个值时,我更喜欢将其作为关联数组返回。

function get_links($website) {
   $html = file_get_html($website);   
   $img = $html->find('div.entry img',0)->src;  
   $url = $html->find('div.entry a',0)->href;}
   $results = array('img' => $img, 'url' => $url);
   return $results;
}