配列ポインタの問題

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 14:22:54
オリジナル
1013 人が閲覧しました

<?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 '
' }
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を使用していないのですか?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート