2012-07-20 74 views
-2

我想問一下這是什麼樣的錯誤未定義抵消:4PHP刪除未定義,偏移:

我的代碼是

$url = 'http://gogo.com, http://yoyo.com, http://gogo.com, http://yoyo.com, http://gogo.com, http://yoyo.com'; 
$key = 'key1, key2, key3'; 


$xurl = explode("\n", $url); 
$xkey = explode("\n", $key); 

$count = count($xkey); 
echo $count; 
$i = 0; 

while ($i <= $count) { 
    if(empty($xkey[$i])){ 
     unset($xkey[$i]); 
    } 

    echo $xkey[$i]; 

$i++; 
} 

回聲key1 key2 key3

,但事情是,我需要循環xkey等於我的網址 所以回聲應該是,但我只有3關鍵字我的意思是關鍵字小於網址。

我怎樣才能讓這樣的事情......下面

http://gogo.com - key1 
http://yoyo.com - key2 
http://gogo.com - key3 
http://yoyo.com - key1 
http://gogo.com - key2 
http://yoyo.com - key3 
+3

您使用<=在while循環。只有<是因爲你開始用0註釋。所以3個項目將導致索引0,1和2. – 2012-07-20 11:11:00

回答

4

它的意思是,腳本正在尋找的$xkey[4]的值,但該元素不存在。這是因爲這樣的數組鍵是基於0的,所以第四個元素將是$xkey[3]。改變你的while語句while ($i < $count)作爲計數爲4,但最大關鍵將是3

+0

okie先生謝謝你,讓我試試。 – Butternut 2012-07-20 11:12:30

+0

先生它的工作非常感謝你... – Butternut 2012-07-20 11:13:02

+1

+1 - 重要的是要注意,這隻適用於具有連續鍵的0索引數組。在這種情況下,對於輸入數組而言,這總是正確的,因爲您直接使用'explode()'的結果,但它不是真的到處都是,並且完全與關聯數組分開。這就是爲什麼一般情況下,如果你想迭代一個數組,最安全的循環結構是'foreach'。它也有創造更加整潔的代碼的好的副作用。 – DaveRandom 2012-07-20 11:14:52

1

你做

while ($i <= $count) { 

其中$ count是在$ x鍵元件的數量(讓說,4元素) 由於數組是0索引,元素$ xkey [3]是第4個也是最後一個元素。

$ xkey [4]會給你帶來那個錯誤。

現在,在這個while ($i <= $count) {中刪除「=」,它應該消失。

0

我不確定從哪裏開始解釋你的問題是什麼,你有一個完全錯誤的方法。爲了得到你想要的結果,你需要這樣做:

$urlString = 'http://gogo.com, http://yoyo.com, http://gogo.com, http://yoyo.com, http://gogo.com, http://yoyo.com'; 
$keyString = 'key1, key2, key3'; 

$urls = explode(',', $urlString); 
$keys = explode(',', $keyString); 

$i = 0; 
$count = count($keys); 

foreach ($urls as $url) { 
    echo $url, ' - ', $keys[$i % $count], PHP_EOL; 
    $i++; 
} 
+0

所以你終於加入了100K俱樂部。再來10個我。很好的使用模數,我總是因爲某種原因而忘記它,甚至當我記得我不得不停下來做一些數學... – DaveRandom 2012-07-20 11:18:06

+0

謝謝。別人downvote的解釋也會很好。 – deceze 2012-07-20 11:21:14