php foreachの使い方を詳しく解説
php foreach の使用法: 1. 構文「foreach (array_expression as $value)」で使用します; 2. 構文「foreach (array_expression as $key => $value)」で使用します。
推奨: 「PHP ビデオ チュートリアル 」
PHP での foreach の使用法と例
Foreach は PHP でよく使用されますが、foreach を使用するには配列を使用する必要があります。したがって、この記事では、配列と foreach について同時に説明します。
Foreach には 2 つの構文があります:
最初の構文: 指定された配列ステートメントの array_expression 配列を走査します。ループを通過するたびに、現在のセルの値が $value に割り当てられ、配列内のポインターが 1 ステップ前に移動します (そのため、次のループで次のセルが取得されます)。
foreach (array_expression as $value)
2 番目のタイプ: 上記と同様に、同時に現在のユニットのキー名も各ループの変数 $key に割り当てられます。
foreach (array_expression as $key => $value)
では、一つずつ説明していきましょう!
1. 1 次元の通常の配列と foreach
最初に、次のように 1 次元の配列を作成します:
$a = array('Tom','Mary','Peter','Jack');
1. 使用します。出力する各メソッドの最初の 1 つ。
foreach ($a as $value) { echo $value."<br/>"; }
最終結果は:
Tom Mary Peter Jack
2. 2 番目の foreach メソッドを使用して出力します。
foreach ($a as $key => $value) { echo $key.','.$value."<br/>"; }
最終結果は次のとおりです:
0,Tom 1,Mary 2,Peter 3,Jack
要約: 明らかに、$key があと 1 つだけあることがわかり、この $key の値はシリアル番号です。番号 1、2、3、4 などです。
2. 1 次元の連想配列と foreach
1 次元の連想配列は次のとおりです:
$b = array('a'=>'Tom','b'=>'Mary','c'=>'Peter','d'=>'Jack');
$b = array( 'a'=>'Tom', 'b'=>'Mary', 'c'=>'Peter', 'd'=>'Jack' );
1. 最初の foreach メソッドを使用して、上記と同じものを出力します。
foreach ($b as $value) { echo $value."<br/>"; }
最終結果は:
Tom Mary Peter Jack
2. 2 番目の foreach メソッドを使用して出力します。
foreach ($b as $key => $value) { echo $key.','.$value."<br/>"; }
最終結果は次のとおりです:
a,Tom b,Mary c,Peter d,Jack
要約: 明らかに、1 次元の連想配列では、$key は関連付けられたシリアル番号、つまり、対応するシリアル番号です。あいうえお。
3. 通常の 2 次元配列と foreach
2 次元配列を走査する場合、少し面倒になります。走査された値は配列であるため、配列であるため、配列に対してさまざまな操作を実行できます。
まず、次のような基本的な 2 次元配列を見てみましょう:
$c = array( array('1','Tom'), array('2','Mary'), array('3','Peter'), array('4','Jack') );
1. 最初の foreach メソッドを使用します:
foreach ($c as $value) { print_r($value); echo "<br/>"; }
は次の結果を取得します:
Array ( [0] => 11 [1] => Tom ) Array ( [0] => 22 [1] => Mary ) Array ( [0] => 33 [1] => Peter ) Array ( [0] => 44 [1] => Jack )
2。2 番目の foreach メソッドを使用します:
foreach ($c as $key => $value) { echo '$key='.$key."<br/>"; print_r($value); echo "<br/>"; }
は次の結果を取得します:
$key=0 Array ( [0] => 11 [1] => Tom ) $key=1 Array ( [0] => 22 [1] => Mary ) $key=2 Array ( [0] => 33 [1] => Peter ) $key=3 Array ( [0] => 44 [1] => Jack )
概要: 上記からわかるように、基本的な 2 次元配列の場合、$key は 0\1\2\3 などのシリアル番号です。
4. 連想二次元配列とforeach
実際のプロジェクトでは連想二次元配列がよく使われることを説明します。なぜ?一般に、データベースから抽出されたデータは 2 次元配列に関連付けられていますが、2 次元配列の関連付けを学習すれば、実際の PHP 演習の大部分をマスターしたことになります。
次に、次のように、最初に関連する 2 次元配列をリストします:
$d = array( array('id'=>'11','name'=>'Tom'), array('id'=>'22','name'=>'Mary'), array('id'=>'33','name'=>'Peter'), array('id'=>'44','name'=>'Jack') );
1。最初のメソッド コードを使用します:
foreach ($d as $value) { print_r($value); echo "<br/>"; }
得られた結果は次のとおりです:
Array ( [id] => 11 [name] => Tom ) Array ( [id] => 22 [name] => Mary ) Array ( [id] => 33 [name] => Peter ) Array ( [id] => 44 [name] => Jack )
明らかに、関連付けと非関連付けの違いは次のとおりです。非関連付けでは先頭に 0/1 などが付きますが、関連付けでは特定の名前 id/ が表示されます。名前など
2. 2 番目の方法を使用したコード:
foreach ($d as $key => $value) { echo '$key='.$key."<br/>"; print_r($value); echo "<br/>"; }
得られた結果は次のとおりです:
$key=0 Array ( [id] => 11 [name] => Tom ) $key=1 Array ( [id] => 22 [name] => Mary ) $key=2 Array ( [id] => 33 [name] => Peter ) $key=3 Array ( [id] => 44 [name] => Jack )
要約: ここの $key はまだ 0/ です。 1/2/3。
5. プロジェクトでの実際の適用
説明: プロジェクトでは配列に多くの変更があり、もちろん foreach が重要な役割を果たします。もちろん while や each などのメソッドも使用できますが、foreach が最も便利です。プロジェクトの一般的な実践方法について簡単に説明しましょう。
実践 1: 2 次元の連想配列を 1 次元の通常の配列に変換する
引き続き 4 番目の 2 次元の連想配列のリストは次のとおりです:
$d = array( array('id'=>'11','name'=>'Tom'), array('id'=>'22','name'=>'Mary'), array('id'=>'33','name'=>'Peter'), array('id'=>'44','name'=>'Jack') );
ここで必要な列は 1 つだけです: name もちろん、次のメソッドを使用して実装できます。
foreach ($d as $key => $value) { echo ($value['name']); echo "<br/>"; }
ただし、場合によっては 1 次元配列としてリストする必要があるため、次のメソッドがあります:
//获取name列作为一维数组 $nameArr = array(); //name列 foreach ($d as $key => $value) { $nameArr[] = $value['name']; } print_r($nameArr);
上記では、空の配列値を代入することにより、この空の配列が値と等しく、新しい配列を取得します。上記のコードの結果は次のようになります。
Array ( [0] => Tom [1] => Mary [2] => Peter [3] => Jack )
この配列は明らかに、次のような 1 次元の通常の配列です。
$d = array('Tom','Mary','Peter','Jack');
よし、2次元を変換してみよう 以上で、連想配列を1次元の通常配列に変換することができました。
実践 2: 2 レベル分類と無限レベル分類
データベースから取り出すデータは 2 次元配列であり、2 次元連想配列であることは明らかです。 。では、親カテゴリを抽出するにはどうすればよいでしょうか?親カテゴリに対応するサブカテゴリを取得するにはどうすればよいですか?
最初に説明することは、ほとんどすべてのカテゴリがデータベース スキーマであるため、その構造と対応するデータを取得する方法を理解することが非常に必要であるということです。
第 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 foreachの使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
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 にアップグレードする方法について説明します。

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

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

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

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

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