如何在PHP中打印数组数组的所有第一个值?

时间:2016-07-20 19:23:18

标签: php arrays foreach domparser

我正在使用'PHP Simple HTML DOM Parser'库。 我的代码基本上遍历我的不同网站并列出了我需要的所有相关锚点,我的问题是:如何在"选择器"的锚点中打印href的第一个值。在$memb(n)数组中的每个$team变量中。

这是我的代码:

$memb1 = 'http://www.xyz1.org';
$memb2 = 'http://www.abc3.org';
$memb(n) = '...etc...etc'

$teams = array(
    array("url" => $memb1, "selector" => ".product-list >
                      table:nth-child(1) >
                      tbody:nth-child(1) >
                      tr:nth-child(2) >
                      td:nth-child(2) > a"),
    array("url" => $memb2, "selector" => ".product-list >
                      table:nth-child(1) >
                      tbody:nth-child(1) >
                      tr:nth-child(2) >
                      td:nth-child(2) > a"),
    array("url" => $memb(n), "selector" => ".product-list >
                      table:nth-child(1) >
                      tbody:nth-child(1) >
                      tr:nth-child(2) >
                      td:nth-child(2) > a"),...etc...etc

当像这样运行foreach循环时:

foreach($teams as $site) {
    $url = $site["url"];
    $html = file_get_html($url);
    foreach ($html->find($site["selector"]) as $a) {
        $links[] = $a->href;
    }
}
?>
<pre>
<?php print_r($links);?>
</pre>

我从所有$memb变量中得到了我想要的所有选定锚点,但我试图在&#34;选择器&#34的锚点中打印href的第一个值;在$memb(n)数组中的每个$team变量中,但我无法找到实现此目的的方法。

我已经尝试了print_r(array_values($links)[0]);但我只获得$memb1的第一个锚点,它停在那里,它不会继续打印$memb2的第一个锚点,依此类推

如何从每个不同的$ memb网站打印第一个锚点(索引0)?

2 个答案:

答案 0 :(得分:2)

如果我找到你,那就试试吧:

foreach($teams as $site) {
    $url = $site["url"];
    $html = file_get_html($url);
    foreach ($html->find($site["selector"]) as $a) {
        $links[] = $a->href;
        break;
    }
}

或者,你可以做一点优化:

foreach($teams as $site) {
    $url = $site["url"];
    $html = file_get_html($url);
    $link = $html->find($site["selector"], 0);
    if (!empty($link)) $links[] = $link->href;
}

答案 1 :(得分:1)

对调用find()

的结果使用数组索引
foreach($teams as $site) {
    $url = $site["url"];
    $html = file_get_html($url);
    $anchors = $html->find($site["selector"]);
    if (!empty($anchors)) {
        $links[] = $anchors[0]->href;
    }
}