迭代時,只有一次我在test.php
下面的代碼創建的字符串:循環創造陣列,但在PHP
<?php
$url = "http://pars.mp3hunt.me/r1.php";
$again = 1;
while ($again == 1) {
$headers = get_headers($url, 1);
preg_match('/\b([3]\d\d)\b/', $headers[0], $matches); // 3XX error
if (count($matches) > 0) {
$url = $headers['Location'];
} else {
$again = 0;
}
}
if (is_array($url)) {
echo 'yes';
}
print_r($url);
?>
和r1.php
r2.php
重定向。 r1.php
有:
<?php
$url="http://pars.mp3hunt.me/r2.php";
header('Location: ' . $url, true, 302);
?>
`r2.php有
<?php
$url="http://pars.mp3hunt.me/r3.php";
header('Location: ' . $url, true, 302);
?>
和r3.php
有一些文字。
現在,當$url
變量分配http://pars.mp3hunt.me/r1.php
印刷$url
是一個數組,並且當它被分配http://pars.mp3hunt.me/r2.php
它是一個字符串。問題是爲什麼是這樣?我只在任何地方分配$url
字符串。我也沒有宣佈$url
作爲一個數組,並仍然在兩次重定向(迭代)後,它成爲一個數組,並在一次重定向(迭代)它是字符串。
關於PHP變量的事情是,即使你沒有一個聲明爲數組,但如果它分配一個數組值也將被關成陣列。 – hungrykoala
快速瀏覽一下,爲什麼問題依賴'get_headers'的返回值的答案,這個(也與流相關)的一些細節和示例在這裏:https://hakre.wordpress.com/2011/ 09/17/head-first-with-php-streams/ – hakre
因爲'$ headers ['Location'];'是一個數組!所以這行'$ url = $ headers ['Location'];'使'$ url'成爲一個數組 – RiggsFolly