PHP删除未定义的偏移量:

PHP删除未定义的偏移量:,php,loops,while-loop,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( $xk

我想问一下这种未定义偏移量的错误是什么: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++;   
}

这意味着脚本正在查找
$xkey[4]
的值,但该元素不存在。这是因为这样的数组键是基于0的,所以第四个元素将是
$xkey[3]
。将while语句更改为
while($i<$count)
因为count将是4,但max键将是3。

您正在执行的操作

while ( $i <= $count ) {

虽然($i我不确定从哪里开始解释您的问题,但您的方法完全错误。要获得您想要的结果,您需要执行以下操作:

$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++;
}

您使用的是+1-需要注意的是,这仅适用于具有连续键的0索引数组。在这种情况下,输入数组始终如此,因为您直接处理
explode()的结果
,但并非所有地方都是这样,关联数组会完全崩溃。这就是为什么一般来说,如果你想迭代一个数组,最安全的循环结构是
foreach
。它还有一个很好的副作用,那就是创建更整洁的代码。所以你终于加入了100K俱乐部。再给我10个吧关于模数,我总是因为某些原因而忘记它,甚至当我记得我必须停下来做一些数学…谢谢。解释一下其他人的否决票也会很好。
$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++;
}