数组的指针问题

WBOY
Freigeben: 2016-06-23 14:22:54
Original
981 Leute haben es durchsucht

<?php$arr = array(	array(		'id'=>1,		'title'=>'测试1',	),	array(		'id'=>2,		'title'=>'测试2',	),	array(		'id'=>3,		'title'=>'测试3',	),	array(		'id'=>4,		'title'=>'测试4',	),	array(		'id'=>5,		'title'=>'测试5',	),);while(list($k, $v) = each($arr)){	print_r(current($arr));	echo '<br>';}
Nach dem Login kopieren


循环一个二维数组,使用 current 返回当前元素,为啥从第2个元素开始的呢? 想要从1开始怎么做,请前辈指教


回复讨论(解决方案)

第一次执行到while(list($k, $v) = each($arr))这里时(注:each -- 返回数组中当前的键/值对并将数组指针向前移动一步 )
也就是说 each($arr)已经令$arr数组的指针下移一位
所以是从第2个元素开始.
要从第一个开始就这样吧:
do
{
print_r(current($arr));

echo '
';
}
while (list($k, $v) = each($arr));

希望能帮到你.

current函数是返回当前数组单元。。。你第一次while判断时each已经将数组单元指向下一位了。。结果就从2开始杯具了

改用do就可以了,因为while是指针先前移动一位了

<?php$arr = array(	array(		'id'=>1,		'title'=>'测试1',	),	array(		'id'=>2,		'title'=>'测试2',	),	array(		'id'=>3,		'title'=>'测试3',	),	array(		'id'=>4,		'title'=>'测试4',	),	array(		'id'=>5,		'title'=>'测试5',	),);do{	print_r(current($arr));	echo '<br>';}while(list($k, $v) = each($arr));?>
Nach dem Login kopieren

为什么用while(list($k, $v) = each($arr))而不用foreach呢?

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage