ホームページ  >  記事  >  バックエンド開発  >  配列ポインタの問題

配列ポインタの問題

WBOY
WBOYオリジナル
2016-06-23 14:22:54979ブラウズ

<?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>';}


2 次元配列をループし、current を使用して現在の要素を返すのはなぜですか? 1から始めたい方はアドバイスください


ディスカッション(解決策)への返信

初めて while(list($k, $v) = each($arr)) を実行するとき (注: each -- 配列内の現在のキーと値のペアを返し、配列ポインターを 1 ステップ前に移動します)
言い換えると、 each($arr) は $arr 配列のポインターを 1 つ下に移動しました
したがって、 2 番目の要素。
最初の要素から実行しましょう:
do
{
print_r(current($arr))

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

これがお役に立てば幸いです

current 関数は現在の配列単位を返します。 。 。最初に while 判定を行うとき、それぞれはすでに配列単位を次のビットに指しています。 。 2 から始めると結果は悪くなります

代わりに do を使用してください。while はポインタが 1 つ前に移動したことを意味するからです

<?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));?>

なぜ代わりに while(list($k, $v) = each($arr)) を使用するのですかforeachを使用していないのですか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。