PHP删除未定义的偏移量:

时间:2012-07-20 11:08:28

标签: php loops while-loop

我想问一下这种错误是什么样的未定义偏移:4

我的代码是

$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循环等于我的url 所以回声应该是,但我只有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 个答案:

答案 0 :(得分:4)

这意味着脚本正在寻找$xkey[4]的值,但该元素不存在。发生这种情况是因为像这样的数组键是从0开始的,所以第四个元素将是$xkey[3]。将您的while语句更改为while ( $i < $count ),因为count为4,但最大键为3。

答案 1 :(得分:1)

你正在做

while ( $i <= $count ) {

其中$ count是$ xkey中的元素数(假设有4个元素) 由于数组是0索引的,元素$ xkey [3]是第4个和最后一个元素。

$ xkey [4]会给你带来错误。

现在,在此while ( $i <= $count ) {中删除“=”,它就会消失。

答案 2 :(得分: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++;
}