Php 如何在作用域外使用数组
当我将foreach循环置于for循环范围之外时,它似乎不起作用。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}\
我在这里做错了什么:
<?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_matchall生成数组。我收到以下通知:通知:数组到字符串的转换在第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>';
}
}