Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在作用域外使用数组_Php - Fatal编程技术网

Php 如何在作用域外使用数组

Php 如何在作用域外使用数组,php,Php,当我将foreach循环置于for循环范围之外时,它似乎不起作用。 我在这里做错了什么: <?php $allUrls = array(); for( $i = 0; $i <= 1; $i++ ) { $html = file_get_contents("http://www.keurmerk.info/Leden_Partners?s=&c=0&Page=".$i.""); $pattern = "/(http(s)?:\/\/)?(w{3}\

当我将foreach循环置于for循环范围之外时,它似乎不起作用。
我在这里做错了什么:

<?php
$allUrls = array();

for( $i = 0; $i <= 1; $i++ ) {

    $html = file_get_contents("http://www.keurmerk.info/Leden_Partners?s=&c=0&Page=".$i."");
    $pattern = "/(http(s)?:\/\/)?(w{3}\.)(\w+\.)([a-zA-Z]{2,6})(\/\w*)?/";
    preg_match_all( $pattern, $html, $urls );

    if ($i == 0) $allUrls[0] = $urls[0];
    else $allUrls[0] .= $urls[0];

}           

foreach ( $allUrls[0] as $url ) {
    echo $url . '<br>'; 
}
?>

如果我这样做:

<?php
for( $i = 0; $i <= 1; $i++ ) {

    $html = file_get_contents("http://www.keurmerk.info/Leden_Partners?s=&c=0&Page=".$i."");
    $pattern = "/(http(s)?:\/\/)?(w{3}\.)(\w+\.)([a-zA-Z]{2,6})(\/\w*)?/";
    preg_match_all( $pattern, $html, $urls );
    $allUrls[0] = $urls[0];
    foreach ( $allUrls[0] as $url ) {
        echo $url . '<br>';
    }
}
?>

然后它似乎起作用了。

改变这个:

$allUrls[0][] = $urls[0];
因此,整个代码将是:

$allUrls = array();

for( $i = 0; $i <= 1; $i++ ) {

    $html = file_get_contents("http://www.keurmerk.info/Leden_Partners?s=&c=0&Page=".$i."");
    $pattern = "/(http(s)?:\/\/)?(w{3}\.)(\w+\.)([a-zA-Z]{2,6})(\/\w*)?/";
    preg_match_all( $pattern, $html, $urls );

    $allUrls[$i] = $urls[0];

}           

foreach ( $allUrls as &$url ) {
    echo $url . '<br>'; 
}
$allUrls=array();
对于($i=0;$i)
表示将该值附加到数组的第一个元素,这就像将字符串添加到值的末尾一样。如果需要向该数组(第0位的子数组)添加新值,请使用此表示法

$allUrls[0][] = $urls[0];
但是,实际上根本不需要这个子数组。您可以简单地删除它

if ($i == 0) $allUrls[0] = $urls[0];
else $allUrls[0] .= $urls[0];
和使用

 $allUrls[]=$urls[0];
然后像这样简单地在上面循环

foreach ( $allUrls as $url ) {
    echo $url . '<br>'; 
}
foreach($allUrls作为$url){
回显$url。“
”; }
$allUrls=array();

对于($i=0;$i您可以使用以下函数执行此操作:

function parseMyUrl($pageNo) {
    $html = file_get_contents("http://www.keurmerk.info/Leden_Partners?s=&c=0&Page=". $pageNo);
    $pattern = "/(http(s)?:\/\/)?(w{3}\.)(\w+\.)([a-zA-Z]{2,6})(\/\w*)?/";
    preg_match_all($pattern, $html, $urls);
    if ($urls[0])
        return $urls[0];
    else
        return array();
}
用法:

var_dump(parseMyUrl(1));
var_dump(parseMyUrl(2));
产出:

array (size=21)
  0 => string 'http://www.bikinisonline.eu' (length=27)
  1 => string 'http://www.handpoppen.net' (length=25)
  2 => string 'http://www.123kinderfietsen.nl' (length=30)
  3 => string 'http://www.123ledspots.nl' (length=25)
  4 => string 'http://www.123mijngordijn.nl' (length=28)
  5 => string 'http://www.123soatest.nl' (length=24)
  6 => string 'http://www.123sportfietsen.nl' (length=29)
  7 => string 'http://www.123superfoods.nl' (length=27)
  8 => string 'http://www.123telefoon.nl' (length=25)
  9 => string 'http://www.123tuinleds.nl' (length=25)
  10 => string 'http://www.123voetmassage.nl' (length=28)
  11 => string 'http://www.12cook.com' (length=21)
  12 => string 'http://www.1gameshop.be' (length=23)
  13 => string 'http://www.24parfums.nl' (length=23)
  14 => string 'http://www.2wielerwinkel.nl' (length=27)
  15 => string 'http://www.4activekidz.nl' (length=25)
  16 => string 'http://www.4kidsathome.nl' (length=25)
  17 => string 'http://www.4kidsnederland.nl' (length=28)
  18 => string 'http://www.4moregames.nl' (length=24)
  19 => string 'http://www.4sporters.nl' (length=23)
  20 => string 'https://www.extremetracking.com' (length=31)

array (size=19)
  0 => string 'http://www.goedkopesneeuwkettingen.nl' (length=37)
  1 => string 'http://www.bikinisonline.eu' (length=27)
  2 => string 'http://www.villatotaal.nl' (length=25)
  3 => string 'http://www.4yoursport.nl' (length=24)
  4 => string 'http://www.4youwear.nl' (length=22)
  5 => string 'http://www.6566.eu' (length=18)
  6 => string 'http://www.aadenwijn.nl' (length=23)
  7 => string 'http://www.aagifts.nl' (length=21)
  8 => string 'http://www.aanhangershop.nl' (length=27)
  9 => string 'http://www.aanhangwagendirect.nl' (length=32)
  10 => string 'http://www.aannemerskorting.nl' (length=30)
  11 => string 'http://www.abcoparts.nl' (length=23)
  12 => string 'http://www.aboutshoes.nl' (length=24)
  13 => string 'http://www.accudienst.nl/' (length=25)
  14 => string 'http://www.acculaptop.com' (length=25)
  15 => string 'http://www.accuserviceholland.nl' (length=32)
  16 => string 'http://www.accushop.nl' (length=22)
  17 => string 'http://www.accuweb.nl' (length=21)
  18 => string 'https://www.extremetracking.com' (length=31)
现在,如果你想在循环中使用它……你可以用一种漂亮干净的方式:

for ($i = 0; $i <= 1; $i++) {
    $urls = parseMyUrl($i);
    foreach ($urls as $url) {
        echo $url . '<br>';
    }
}

for($i=0;$i)当您只将内容放在一个键中时,为什么要使用数组?在foreach之前打印$allUrls[0],我想您会找到答案。如果不这样做,
=
将连接字符串,而不会在数组中添加更多项。
否则$allUrls[0]。=$url[0]
您对连接有何期望?preg_matchall生成数组。我收到以下通知:
通知:数组到字符串的转换在第102行
这是foreach($allUrls as$url)的这一行{
给出了错误。它不显示URL,我只在屏幕上看到错误。是的,可以在这里看到解决方案-或者在这里-只需执行
打印($allUrls)
然后你就会知道为什么会有这样的错误。我收到了以下通知:
通知:数组到字符串的转换在第102行
这是这一行
foreach($allUrls as$url){
给出错误。在foreach循环中使用var_dump或print_r而不是echo..查看它是数组还是字符串..如果是字符串,则表示for循环中的$URL[0]是数组..var_一步一步地转储..我没有测试它..所以。。
array (size=21)
  0 => string 'http://www.bikinisonline.eu' (length=27)
  1 => string 'http://www.handpoppen.net' (length=25)
  2 => string 'http://www.123kinderfietsen.nl' (length=30)
  3 => string 'http://www.123ledspots.nl' (length=25)
  4 => string 'http://www.123mijngordijn.nl' (length=28)
  5 => string 'http://www.123soatest.nl' (length=24)
  6 => string 'http://www.123sportfietsen.nl' (length=29)
  7 => string 'http://www.123superfoods.nl' (length=27)
  8 => string 'http://www.123telefoon.nl' (length=25)
  9 => string 'http://www.123tuinleds.nl' (length=25)
  10 => string 'http://www.123voetmassage.nl' (length=28)
  11 => string 'http://www.12cook.com' (length=21)
  12 => string 'http://www.1gameshop.be' (length=23)
  13 => string 'http://www.24parfums.nl' (length=23)
  14 => string 'http://www.2wielerwinkel.nl' (length=27)
  15 => string 'http://www.4activekidz.nl' (length=25)
  16 => string 'http://www.4kidsathome.nl' (length=25)
  17 => string 'http://www.4kidsnederland.nl' (length=28)
  18 => string 'http://www.4moregames.nl' (length=24)
  19 => string 'http://www.4sporters.nl' (length=23)
  20 => string 'https://www.extremetracking.com' (length=31)

array (size=19)
  0 => string 'http://www.goedkopesneeuwkettingen.nl' (length=37)
  1 => string 'http://www.bikinisonline.eu' (length=27)
  2 => string 'http://www.villatotaal.nl' (length=25)
  3 => string 'http://www.4yoursport.nl' (length=24)
  4 => string 'http://www.4youwear.nl' (length=22)
  5 => string 'http://www.6566.eu' (length=18)
  6 => string 'http://www.aadenwijn.nl' (length=23)
  7 => string 'http://www.aagifts.nl' (length=21)
  8 => string 'http://www.aanhangershop.nl' (length=27)
  9 => string 'http://www.aanhangwagendirect.nl' (length=32)
  10 => string 'http://www.aannemerskorting.nl' (length=30)
  11 => string 'http://www.abcoparts.nl' (length=23)
  12 => string 'http://www.aboutshoes.nl' (length=24)
  13 => string 'http://www.accudienst.nl/' (length=25)
  14 => string 'http://www.acculaptop.com' (length=25)
  15 => string 'http://www.accuserviceholland.nl' (length=32)
  16 => string 'http://www.accushop.nl' (length=22)
  17 => string 'http://www.accuweb.nl' (length=21)
  18 => string 'https://www.extremetracking.com' (length=31)
for ($i = 0; $i <= 1; $i++) {
    $urls = parseMyUrl($i);
    foreach ($urls as $url) {
        echo $url . '<br>';
    }
}