PHPでのforeachの使い方
この記事では、PHP での foreach の使用法と例を紹介し、興味のある友人は参照してください。
関連する推奨事項: php完全独習マニュアル、PHPオンライントレーニングコース
foreachの使用はPHPでよく使用され、foreachを使用するには配列を使用する必要があります。したがって、この記事では、配列と foreach について同時に説明します。
foreach には 2 つの構文があります:
最初の構文: 指定された配列ステートメントの array_expression 配列を走査します。ループを通過するたびに、現在のセルの値が $value に割り当てられ、配列内のポインターが 1 ステップ前に移動します (そのため、次のループで次のセルが取得されます)。
foreach (array_expression as $value)
2 番目: 上記と同様に、同時に現在のユニットのキー名も各ループの変数 $key に割り当てられます。
rreee以下、一つずつ説明していきましょう!
1. 1 次元の通常の配列と foreach
まず、次のように 1 次元の配列を作成します。
foreach (array_expression as $key => $value)
1. 最初の foreach メソッドを使用して出力します。
$a = array('Tom','Mary','Peter','Jack');
最終結果は次のとおりです:
Tom
Mary
Peter
Jack
2. 2 番目の foreach メソッドを使用して出力します。
foreach ($a as $value) { echo $value."<br/>"; }
最終結果は次のとおりです:
0、Tom
1、Mary
2、Peter
3、Jack
概要: 明らかに、$key がもう 1 つだけあることがわかり、この $key value はシリアル番号 1、2、3、4 などです。
2. 1 次元の連想配列と foreach
1 次元の連想配列は次のとおりです。
foreach ($a as $key => $value) { echo $key.','.$value."<br/>"; }
次のように記述することを好む人もいます。最初の foreach メソッドは上記と同じものを出力します。
$b = array('a'=>'Tom','b'=>'Mary','c'=>'Peter','d'=>'Jack');
最終結果は次のとおりです:
Tom
MaryPeter
Jack
2. 2 番目の foreach メソッドを使用して出力します。
$b = array( 'a'=>'Tom', 'b'=>'Mary', 'c'=>'Peter', 'd'=>'Jack' );
最終結果は次のとおりです:
a、Tom
b、Maryc、Peter
d、Jack
明らかに、1 次元の連想配列では、$key は関連付けられたシリアル番号です。つまり、対応する a、b、c、d です。
推奨ビデオチュートリアル:章ビデオチュートリアル「3次元と2次元の通常の配列と foreach
foreachループを使用して走査:インデックスと連想配列」ソースコース「Dugu Jiijian (4)_PHPビデオチュートリアル
」
は、2 次元配列を走査するときに少し面倒です。なぜでしょうか。走査された値は配列であるため、配列に対してさまざまな操作を実行できます。
まず、次のような基本的な 2 次元配列を見てみましょう:
foreach ($b as $value) { echo $value."<br/>"; }
1。最初の foreach メソッド:
foreach ($b as $key => $value) { echo $key.','.$value."<br/>"; }
を使用し、次の結果を取得します:
Array ( [0] => 11 [1] = > トム )
配列 ( [0] => 22 [1] => メアリー ) 配列 ( [0] => 33 [1] => ピーター )
配列 ( [0] => 44 [1] => Jack )
2. 2 番目の foreach メソッド:
$c = array( array('1','Tom'), array('2','Mary'), array('3','Peter'), array('4','Jack') );
を使用し、次の結果を取得します:
$key=0
Array ( [0] => 11 [1] = > ; トム )$key=1
配列 ( [0] => 22 [1] => メアリー )
$key=2
配列 ( [0] => 33 [1] => ピーター )
$key=3
Array ([0] => 44 [1] => Jack )
上記からわかるように、基本的な 2 次元配列の場合、$key は0123などのシリアル番号!
4. 連想二次元配列と foreachは、連想二次元配列が実際のプロジェクトでよく使用されることを示しています。なぜ?一般に、データベースから抽出されたデータは 2 次元配列に関連付けられます。2 次元配列の関連付けを学習すれば、実際の PHP の実践でその大部分を習得したことになります。
次に、次のように、最初に関連する 2 次元配列をリストします:
foreach ($c as $value) { print_r($value); echo "<br/>"; }
1. 最初のメソッド コードを使用します:
foreach ($c as $key => $value) { echo '$key='.$key."<br/>"; print_r($value); echo "<br/>"; }
得られる結果は次のとおりです:
Array ( [id] => 11 [name] => トム )
配列 ( [id] => 22 [名前] => メアリー )配列 ( [id] => 33 [名前] => ピーター )
配列 ( [id] => 44 [name ] => Jack )
明らかに、関連付けられている場合と関連付けられていない場合の違いは次のとおりです。関連付けられていない場合は先頭に 0/1 などが付きますが、関連付けられている場合は特定の名前 ID/名前などが表示されます。
2. 2 番目のメソッドのコードを使用します:
$d = array( array('id'=>'11','name'=>'Tom'), array('id'=>'22','name'=>'Mary'), array('id'=>'33','name'=>'Peter'), array('id'=>'44','name'=>'Jack') );
結果は次のようになります:
$key=0
Array ( [id] => 11 [name] => Tom )$key=1
配列 ( [id] => 22 [名前] => メアリー )
$key=2
配列 ( [id] => 33 [名前] => ピーター )
$key=3
配列 ( [ id ] => 44 [name] => Jack )
概要: ここの $key は 0/1/2/3 のままです。
説明: プロジェクトでは配列に多くの変更があり、もちろん foreach が重要な役割を果たします。もちろん while や each などのメソッドも使用できますが、foreach が最も便利です。プロジェクトの一般的な実践方法について簡単に説明しましょう。
实战1:将二维关联数组变为一维普通数组
还是第四列出关联二维数组,如下:
$d = array( array('id'=>'11','name'=>'Tom'), array('id'=>'22','name'=>'Mary'), array('id'=>'33','name'=>'Peter'), array('id'=>'44','name'=>'Jack') );
现在我们只要 name 一列的内容,当然我们可以用以下的方法来实现,
foreach ($d as $key => $value) { echo ($value['name']); echo "<br/>"; }
但有时候我们不得不将之列为一个一维数组,于是我们就有了以下的方法:
//获取name列作为一维数组 $nameArr = array(); //name列 foreach ($d as $key => $value) { $nameArr[] = $value['name']; } print_r($nameArr);
以上通过赋空数组值,foreach 这个空数组等于我们的值,就得到了一个新的数组!以上代码的结果如下:
Array ( [0] => Tom [1] => Mary [2] => Peter [3] => Jack )
这个数组明显是:一维普通数组,如下:
$d = array('Tom','Mary','Peter','Jack');
好了,将二维关联数组变为一维普通数组就写到了这里!
实战2 :二级分类以及无限级分类
很明显,我们从数据库中取出来的数据就是一个二维数组,而且是二维关联数组。那么,我们怎么取出父分类?怎么取出对应父分类的子分类呢?
首先要说明的是:几乎所有的分类都是一个数据库模式,因此我们十分有必要了解它的结构,还有怎么取出对应的数据!
对于二级分类,为了说明方便,我从网上找一个比较好说明的例子,那就是“新闻分类“!
好了,废话不多说,开始正题!我们先写一个数组。
//从数据库中取出的分类数据 $original_array = array( array('id' => 1,'pid' => 0,'name' => '新闻分类'), array('id' => 2,'pid' => 0,'name' => '最新公告'), array('id' => 3,'pid' => 1,'name' => '国内新闻'), array('id' => 4,'pid' => 1,'name' => '国际新闻'), array('id' => 5,'pid' => 0,'name' => '图片分类'), array('id' => 6,'pid' => 5,'name' => '新闻图片'), array('id' => 7,'pid' => 5,'name' => '其它图片') );
同时,数据库是这个样子的。
说明:数据库的分类就是这个样子的!取出来的数组也是这个样子的!一般这样子的!
//从数据库中取出的分类数据 $original_array = array( array( 'id' => 1, 'pid' => 0, 'name' => '新闻分类' ), array( 'id' => 2, 'pid' => 0, 'name' => '最新公告' ), array( 'id' => 3, 'pid' => 1, 'name' => '国内新闻' ), array( 'id' => 4, 'pid' => 1, 'name' => '国际新闻' ), array( 'id' => 5, 'pid' => 0, 'name' => '图片分类' ), array( 'id' => 6, 'pid' => 5, 'name' => '新闻图片' ), array( 'id' => 7, 'pid' => 5, 'name' => '其它图片' ) );
那么首先我们得知道我们想要的结果是什么样子呢?这一点:我们必要知道!(以前我对这方面了解比较不深,又常用开源程序,因此导致我不怎么会写这方面了)
我们最终想要的结果是这样子的!(不怕大家笑话,这一点我请一个朋友帮的忙才解决的!)
//整理后的分类数据 $output_array = array( array( 'id' => 1, 'pid' => 0, 'name' => '新闻分类', 'children' => array( array( 'id' => 3, 'pid' => 1, 'name' => '国内新闻' ), array( 'id' => 4, 'pid' => 1, 'name' => '国际新闻' ), ), ), array( 'id' => 2, 'pid' => 0, 'name' => '最新公告', ), array( 'id' => 5, 'pid' => 0, 'name' => '图片分类', 'children' => array( array( 'id' => 6, 'pid' => 5, 'name' => '新闻图片' ), array( 'id' => 7, 'pid' => 5, 'name' => '其它图片' ), ), ), );
很明显,这里数组多了一个字段,就是 children!
那么,怎么 从 $original_array 变为 $output_array呢?这里有我一个朋友做的函数,当然也用到 foreach!
函数如下:
//整理函数 /** * 生成无限级树算法 * @author Baiyu 2014-04-01 * @param array $arr 输入数组 * @param number $pid 根级的pid * @param string $column_name 列名,id|pid父id的名字|children子数组的键名 * @return array $ret */ function make_tree($arr, $pid = 0, $column_name = 'id|pid|children') { list($idname, $pidname, $cldname) = explode('|', $column_name); $ret = array(); foreach ($arr as $k => $v) { if ($v [$pidname] == $pid) { $tmp = $arr [$k]; unset($arr [$k]); $tmp [$cldname] = make_tree($arr, $v [$idname], $column_name); $ret [] = $tmp; } } return $ret; }
那们怎么使用呢?
//整理函数的使用 $output_array = make_tree($original_array);
完整使用方法如下:
$output_array =make_tree($arr, 0, 'id|pid|children')
函数之后,我们这样调用就得到了一级分类与二级分类!
foreach ($output_array as $key => $value) { echo '<h2>'.$value['name'].'</h2>'; foreach ($value['children'] as $key => $value) { echo $value['name'].','; }
结果如下:
附:$output_array 这个数组,我们使用print_r,就可以得到如下的结果!
Array ( [0] => Array ( [id] => 1 [pid] => 0 [name] => 新闻分类 [children] => Array ( [0] => Array ( [id] => 3 [pid] => 1 [name] => 国内新闻 [children] => Array ( ) ) [1] => Array ( [id] => 4 [pid] => 1 [name] => 国际新闻 [children] => Array ( ) ) ) ) [1] => Array ( [id] => 2 [pid] => 0 [name] => 最新公告 [children] => Array ( ) ) [2] => Array ( [id] => 5 [pid] => 0 [name] => 图片分类 [children] => Array ( [0] => Array ( [id] => 6 [pid] => 5 [name] => 新闻图片 [children] => Array ( ) ) [1] => Array ( [id] => 7 [pid] => 5 [name] => 其它图片 [children] => Array ( ) ) ) ) )
总结:以上就是本文的全部内容,希望对大家的学习有所帮助。同时也希望大家多多支持PHP中文网。
相关推荐:
以上がPHPでのforeachの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
