ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルの配列トラバーサル ループ実装プログラム

php_PHP チュートリアルの配列トラバーサル ループ実装プログラム

WBOY
WBOYオリジナル
2016-07-13 16:59:57823ブラウズ

PHP での配列トラバーサルで最も一般的に使用されるメソッドは、forac、while、および for です。これら 3 つの配列トラバーサルの実装コードを紹介します。

foreach を使用して PHP 配列にアクセスする場合、走査の順序は固定されていますか?
とよく質問されます。 例:

コードは次のとおりです コードをコピー
$arr['yahoo'] = 2007;
$arr['baidu'] = 2008;
foreach ($arr as $key => $val)
{
//結果はどうなりましたか?
}

別の例:

コードは次のとおりです コードをコピー

$arr[2] = 'フシンチェン';
$arr[1] = 2007;$arr[0] = 2008;
foreach ($arr as $key => $val)
{
//結果はどうなりましたか?
}

php_PHP チュートリアルの配列トラバーサル ループ実装プログラム

、一連の関数 each/next を使用して走査する場合、配列の内部ポインタを移動することで逐次走査も実現します。ここには次のような問題があります。

コードは次のとおりですコードをコピー
$arr = 配列(1,2,3,4,5);
foreach ($arr as $v) {//取得可能}
while (list($key, $v) = each($arr))
{//取得できません}

?>

今紹介した知識を理解すると、この問題は非常に明確になります。foreach は自動的にリセットされますが、while ブロックはリセットされないため、foreach が終了した後、pInternalPointer は配列の末尾を指し、もちろん while もステートメントブロックはアクセスできません。ここでの解決策は、それぞれの前に配列の内部ポインタをリセットすることです。

言い換えれば、PHP で配列を走査する順序は、要素が追加される順序に関連しているということは、記事の冒頭の質問の出力が次のとおりであることが明確にわかります。

フシンチェン

2007年

2008年
したがって、インデックス サイズに従って数値インデックス付き配列を走査したい場合は、foreach ではなく for を使用する必要があります

コードは次のとおりですfor($i=0,$l=count($arr); $i { //現時点では、逐次走査(線形走査)とはみなされません}
コードをコピー

http://www.bkjia.com/PHPjc/631283.html

tru​​ehttp://www.bkjia.com/PHPjc/631283.html技術記事 PHP で配列トラバーサルに最もよく使用されるメソッドは、forac、while、および for です。これら 3 つの配列トラバーサルの実装コードを紹介します。 よく聞かれるのですが、PHPの数値は...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。