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