概述
php foreach的用法详解详细解释了PHP foreach的用法,php foreach的用法:1。通过语法“foreach(array _ expression as $ value)”使用它;2.采用语法“foreach(array _ expression as $ key=$ value)”。
推荐:《PHP视频教程》
PHP中foreach的用法及实例
PHP中经常使用Foreach,如果使用foreach,就必须使用数组。因此,在本文中,我们将讨论数组和foreach。
Foreach有两种语法:
首先是遍历给定的array语句array_expression数组。在每个循环中,当前单元格的值被赋给$value,数组内部的指针向前移动一步(因此在下一个循环中将获得下一个单元格)。
foreach(array _ expression as $ value)第二个同上,当前单元的键名也会在每个循环中赋给变量$key。
foreach(array _ expression as $ key=$ value)我们来一个一个解释!
1.一维普通数组和foreach
我们先写一个一维数组,如下:
$a=array(‘Tom ‘,’ Mary ‘,’ Peter ‘,’ Jack ‘);1.我们使用第一个foreach方法来输出。
foreach ($a as $value) {
echo $值。br/’;
}最终结果是:
汤姆
玛丽
彼得
Jack2,我们用第二个foreach方法输出。
foreach ($a as $key=$value) {
echo $key。’。$value。br/’;
}最终结果是:
0,汤姆
1、玛丽
2,彼得
3.杰克总结道:很明显,我们看到多了一个$key,这个$key的值就是序列号1,2,3,4等等!
第二,一维关联数组和foreach
一维关联数组如下:
$b=数组(‘ a’=’Tom ‘,’ b’=’Mary ‘,’ c’=’Peter ‘,’ d ‘=’ Jack ‘);有些人喜欢这样写,如下:
$b=数组(
a’=’汤姆’,
b’=’玛丽’,
‘ c’=’彼得’,
d’=’杰克’
);1,我们使用第一个foreach方法输出与上面相同的内容。
foreach ($b为$value) {
echo $值。br/’;
}最终结果是:
汤姆
玛丽
彼得
Jack2,我们用第二个foreach方法输出。
foreach ($b as $key=$value) {
echo $key。’。$value。br/’;
}最终结果是:
汤姆
玛丽
彼得
d、Jack Summary:显然,在一维关联数组下,$key是关联的序列号,也就是对应的a、b、c、d。
三维普通数组和foreach
遍历二维数组有点麻烦。为什么?因为遍历的值是数组,既然是数组,就可以对数组进行各种操作!
让我们首先看一个基本的二维数组,如下所示:
$c=数组(
数组(‘ 1 ‘,’ Tom ‘),
数组(‘ 2 ‘,’ Mary ‘),
数组(‘ 3 ‘,’彼得’),
数组(‘ 4 ‘,’插孔’)
);1.我们采用第一种foreach方法:
foreach ($c为$value) {
print _ r($ value);
echo ‘ br/’;
}获得结果:
数组([0]=11 [1]=Tom)
数组([0]=22 [1]=Mary)
数组([0]=33 [1]=彼得)
数组([0]=44 [1]=插孔)2。我们采用第二种方法:
foreach ($c as $key=$value) {
echo“$ key=”。$key。br/’;
print _ r($ value);
echo ‘ br/’;
}获得以下结果:
$key=0
数组([0]=11 [1]=Tom)
$key=1
数组([0]=22 [1]=Mary)
$key=2
数组([0]=33 [1]=彼得)
$key=3
数组([0]=44 [1]=Jack)总结:从上面可以看出,基本的二维数组,$key就是序列号,比如0123等等!
4.将2D数组与foreach关联
说明:关联2D阵列在实际项目中可以用得更多。为什么?一般从数据库中提取的数据都是相关的二维数组。学习了二维数组的关联,在PHP的实战中掌握了很大一部分!
然后首先列出相关的二维数组,如下所示:
$d=数组(
数组(‘ id’=’11 ‘,’ name’=’Tom ‘),
数组(‘ id’=’22 ‘,’ name’=’Mary ‘),
数组(‘ id’=’33 ‘,’ name’=’Peter ‘),
数组(‘ id’=’44 ‘,’ name’=’Jack ‘)
);1、使用第一种方法代码:
foreach ($d为$value) {
print _ r($ value);
echo ‘ br/’;
}结果如下:
数组([id]=11 [name]=Tom)
数组([id]=22 [name]=Mary)
数组([id]=33 [name]=Peter)
数组([id]=44 [name]=Jack)显然,关联与非关联的区别是:非关联前0/1等。而关联则显示具体的姓名id/姓名等。
2.使用第二种方法的代码:
foreach ($d as $key=$value) {
echo“$ key=”。$key。br/’;
print _ r($ value);
echo ‘ br/’;
}结果如下:
$key=0
数组([id]=11 [name]=Tom)
$key=1
数组([id]=22 [name]=Mary)
$key=2
数组([id]=33 [name]=Peter)
$key=3
数组([id]=44 [name]=Jack)总结:这里,$key还是0/1/2/3。
V.在项目中的实际应用
注意:在项目中,数组有很多变化,当然foreach贡献很大!当然,虽然,各等等也可以用,但是foreach最方便!简单说说实战中常见的一些项目吧!
实战一:把二维联想阵改成一维普通阵
它也是关联二维数组的第四个列表,如下所示:
$d=数组(
数组(‘ id’=’11 ‘,’ name’=’Tom ‘),
数组(‘ id’=’22 ‘,’ name’=’Mary ‘),
数组(‘ id’=’33 ‘,’ name’=’Peter ‘),
数组(‘ id’=’44 ‘,’ name’=’Jack ‘)
);现在我们只需要名称列的内容。当然,我们可以通过以下方式实现。
foreach ($d as $key=$value) {
echo($ value[‘ name ‘]);
echo ‘ br/’;
}但有时我们不得不将其列为一维数组,因此我们有以下方法:
//将名称列作为一维数组获取
$ NameArr=array();//名称列
foreach ($d as $key=$value) {
$ NameArr[]=$ value[‘ name ‘];
{}
print _ r($ NameArr);以上,通过赋一个空数组值,空数组foreach等于我们的值,得到一个新数组!上述代码的结果如下:
排列
(
[0]=汤姆
[1]=玛丽
[2]=彼得
[3]=杰克
这个数组显然是一维普通数组,如下:
$d=array(‘Tom ‘,’ Mary ‘,’ Peter ‘,’ Jack ‘);好了,把二维关联数组改成一维普通数组,写在这里!
实战2:二级分类和无限分类
显然,我们从数据库中得到的数据是二维数组和二维关联数组。那么,我们去掉怎么?的父分类,那么怎么去掉父分类对应的子类呢?
首先需要注意的是,几乎所有的分类都是一个数据库模式,所以我们有必要了解它的结构和怎么检索对应的数据!
为了方便解释,我从网上找了一个比较好的例子,就是“新闻分类”!
好了,我们开门见山吧!先写个数组吧。
//从数据库中检索的分类数据
$ original _ array=array(
数组(‘ id’=1,’ pid’=0,’ name’=’新闻分类’),
数组(‘ id’=2,’ PID’=0,’ name ‘=’最新公告’),
数组(‘ id’=3,’ pid’=1,’ name’=’国内新闻’),
数组(‘ id’=4,’ pid’=1,’ name’=’国际新闻’),
数组(‘ id’=5,’ pid’=0,’ name’=’图片分类’),
数组(‘ id’=6,’ pid’=5,’ name’=’ news picture ‘),
数组(‘ id’=7,’ pid’=5,’ name’=’其他图片’)
);同时,数据库看起来是这样的。
注意:数据库的分类是这样的!拿出阵列也是这样!一般这样!
//从数据库中检索的分类数据
$ original _ array=array(
数组(
id’=1,
pid’=0,
名称’=’新闻分类’
),
数组(
id’=2,
pid’=0,
名称’=’最新公告’
),
数组(
id’=3,
pid’=1,
名称’=’国内新闻’
),
数组(
id’=4,
pid’=1,
名称’=’国际新闻’
),
数组(
id’=5,
pid’=0,
名称’=’图片分类’
),
数组(
id’=6,
pid’=5,
名称’=’新闻图片’
),
数组(
id’=7,
pid’=5,
名称’=’其他图片’
)
);所以,首先,我们需要知道自己想要什么。这个:我们需要知道!(我以前对这个不太了解,我经常使用开源程序,这导致我在怎么没有写这个)
这就是我们想要的最终结果!(我不怕笑话。我找了个朋友帮我解决这个问题!)
//分类数据
$output_array=array(
数组(
id’=1,
pid’=0,
名称=’新闻分类,
children’=array(
数组(
id’=3,
pid’=1,
名称=’国内新闻’
),
数组(
id’=4,
pid’=1,
名称=’国际新闻’
),
),
),
数组(
id’=2,
pid’=0,
名称=’最新公告,
),
数组(
id’=5,
pid’=0,
名称=’图片分类,
children’=array(
数组(
id’=6,
pid’=5,
名称=’新闻图片’
),
数组(
id’=7,
pid’=5,
名称=’其它图片’
),
),
),
);很明显,这里数组多了一个字段,就是孩子们!
那么,怎么从$original_array变为$output_array呢?这里有我一个朋友做的函数,当然也用到foreach!
函数如下:
//整理函数
/**
*生成无限级树算法
* @作者白宇2014-04-01
* @param数组$arr输入数组
* @param number $pid根级的pid
* @param string $column_name列名,id|pid父编号的名字|儿童子数组的键名
* @ ret数组$ret
*/
函数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;
{}
{}
ret $ ret
{}那们怎么使用呢?
//整理函数的使用
$ output _ array=make _ tree($ original _ array);完整使用方法如下:
$output_array=make_tree($arr,0,’ id|pid|children ‘)函数之后,我们这样调用就得到了一级分类与二级分类!
foreach($ output _ array as $ key=$ value){
回声h2 .$value[‘name’]./H2 ‘;
foreach($ value[‘ children ‘]as $ key=$ value){
echo $value[‘name’].’;
{}结果如下:
附:$output_array这个数组,我们使用print_r,就可以得到如下的结果!
排列
(
[0]=数组
(
[id]=1
[pid]=0
[name]=新闻分类
[子]=数组
(
[0]=数组
(
[id]=3
[pid]=1
[name]=国内新闻
[子]=数组
(
)
)
[1]=数组
(
[id]=4
[pid]=1
[name]=国际新闻
[子]=数组
(
)
)
)
)
[1]=数组
(
[id]=2
[pid]=0
[姓名]=最新公告
[子]=数组
(
)
)
[2]=数组
(
[id]=5
[pid]=0
[name]=图片分类
[子]=数组
(
[0]=数组
(
[id]=6
[pid]=5
[name]=新闻图片
[子]=数组
(
)
)
[1]=数组
(
[id]=7
[pid]=5
[name]=其它图片
[子]=数组
(
)
)
)
)
最后
以上就是漂亮小懒猪为你收集整理的php foreach详解,php foreach的用法详解,foreach怎么使用的全部内容,希望文章能够帮你解决php foreach详解,php foreach的用法详解,foreach怎么使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复