深远了然PHP中的Array数组和foreach,用法汇总

1. 打探数组

1. 叩问数组

1. 摸底数组

PHP 4 引入了 foreach 结构,和 Perl
以及其余语言很像。那只是一种遍历数组简便方法。foreach
仅能用于数组,当试图将其用来其余数据类型大概三个未起始化的变量时会发生错误。有两种语法,第两种相比次要但却是第3种的得力的扩大。

        PHP 中的数组实际上是三个静止映射。映射是一种把 values 关联到
keys
的品种。详细的分解可参见:PHP.net中的Array数组   

        PHP 中的数组实际上是七个不变映射。映射是一种把 values 关联到
keys
的类型。详细的表明可参见:PHP.net中的Array数组   

PHP 中的数组实际上是贰个静止映射。映射是一种把 values 关联到 keys
的档次。详细的表达可参见:PHP.net中的Array数组    。

foreach (array_expression as $value)
  statement

foreach (array_expression as $key => $value)
  statement

2.例证:一般的数组

2.例子:一般的数组

2.事例:一般的数组

率先种格式遍历给定的 array_expression
数组。每一次循环中,当前单元的值被赋给 $value
并且数组内部的指针向前移一步(由此下贰回巡回校官会博得下叁个单元)。

       那里,作者通过二个大约的事例,并使用图形格局来打听数组。

       那里,笔者经过2个简短的例证,并运用图形格局来打探数组。

这里,作者透过3个归纳的事例,并使用图形方式来打听数组。

其次种格式做同样的事,只是除开当前单元的键名也会在历次循环中被赋给变量
$key。

//1.-----------------------------------

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo var_dump($a);
//1.-----------------------------------

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo var_dump($a);
$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo var_dump($a);

先来看率先个语句,那几个讲话比较简单,array_expression指的是一个数组表达式,as
$val语句将逐一取得该数组的值并保留到$val变量中,此种方法只可以博取数组内的值,而无法博取数组的下标索引值。例如:

 
 澳门葡京备用网址 1
     
澳门葡京备用网址 2    

   澳门葡京备用网址 3      
澳门葡京备用网址 4    

澳门葡京备用网址 5
澳门葡京备用网址 6

$myArray=array("1"=>"val1","2"=>"val2","3"=>"val3");
foreach($myArray as $val) {
   print($val." ");
}

 [注]:使用箭头描述数组$a各类单元对应某一内部存款和储蓄器地址的数据值(实际上,它内部结构采取HashTable结构,能够参考鸟哥写的PHP中的Hash算法)。

 [注]:使用箭头描述数组$a种种单元对应某一内部存款和储蓄器地址的数据值(实际上,它内部结构选用HashTable结构,能够参照鸟哥写的PHP中的Hash算法)。

 [注]:使用箭头描述数组$a各样单元对应某一内部存款和储蓄器地址的数据值(实际上,它内部结构选取HashTable结构,能够参见鸟哥写的PHP中的Hash算法)。

其结果会输出:val1 val2 val3

 

 

3.事例:在数组定义中,添加引用。

再来看看第①种格式,第二种格式除了能像第③种格式一样得到数组内成分的值外,还是能够获得成分的索引值,并保存到$key变量中,若是数组的索引值未经过人工设定,则赶回系统暗中认可的设定值,
看正面例子:

3.例子:在数组定义中,添加引用。

3.事例:在数组定义中,添加引用。

$x = 'x';
$a = array(3 => 'a', 1 => &$x, 2 => 'c');

echo "<hr>";
echo var_dump($a);

$x = 'y';
echo var_dump($a);

先看三个不难的一维数组:

//2.-----------------------------------

$x = 'x';
$a = array(3 => 'a', 1 => &$x, 2 => 'c');

echo "<hr>";
echo var_dump($a);

$x = 'y';
echo var_dump($a);
//2.-----------------------------------

$x = 'x';
$a = array(3 => 'a', 1 => &$x, 2 => 'c');

echo "<hr>";
echo var_dump($a);

$x = 'y';
echo var_dump($a);

数组$a中的第2个单元$a[1]与$x对应的是同八个数码,使用var_dump($a)的时候,会见到数组的第①个单元多个&符号,即&string(1)
“x”,表示援引。

$myArray=array("1"=>"val1","2"="val2","3"=>"val3");
foreach($myArray as $key=>$val) {
   print($key."=>".$val.";");
}

 
澳门葡京备用网址 7
澳门葡京备用网址 8

  澳门葡京备用网址 9深远了然PHP中的Array数组和foreach,用法汇总。
澳门葡京备用网址 10

当 修改$x的值=’y’,也一样修改$a[1]的值=’y’。

该程序将出输出:1=>val1;2=>val2;3=>val3;,接下去我们再来看多个繁杂一点的二维数组遍历,程序如下:

数组$a中的第2个单元$a[1]与$x对应的是同1个数额,使用var_dump($a)的时候,会晤到数组的第二个单元八个&符号,即&string(1)
“x”,表示援引。

数组$a中的第2个单元$a[1]与$x对应的是同1个数量,使用var_dump($a)的时候,会看到数组的第三个单元七个&符号,即&string(1)
“x”,表示援引。

下图能够领略的叙述这一变型:

$myArray=array(
   "1"=>array("11"=>"val11","12"=>"val12","13"=>"val13"),
   "2"=>array("21"=>"val21","22"=>"val22","23"=>"val23"),
   "3"=>array("31"=>"val31","32"=>"val32","33"=>"val33")
);
print("<ul>");
foreach($myArray as $key=>$val) {
   print("<li>".$key."</li>");
   if (is_array($val)) {   //判断$val的值是否是一个数组,如果是,则进入下层遍历
     print("<ul>");
    foreach($val as $key=>$val) {
       print("<li>".$key."=>".$val."</li>");
     }
     print("</ul>");
   }
}
print("</ul>");

当 修改$x的值=’y’,也如出一辙修改$a[1]的值=’y’。

当 修改$x的值=’y’,也一律修改$a[1]的值=’y’。

澳门葡京备用网址 11

出口结果:

下图能够驾驭的讲述这一转移:

下图能够明白的叙述这一变化:

4.例子:使用foreach遍历数组。

  1
    11=>val11
    12=>val12
    13=>val13
  2
    21=>val21
    22=>val22
    23=>val23
  3
    31=>val31
    32=>val32
    33=>val33

              
澳门葡京备用网址 12

               澳门葡京备用网址 13

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "<hr>";
foreach ($a as $key => $value) {
  echo "$key => $value <br>";

}

<ul> 和 <li>是 标签,作用是显得个虔诚小圆点和空心小圆点。
出于地点的是贰个二维数组,在第3回遍历后所收获的$val值将是叁个数组,所以自身在遍历中加了八个判断,以便举办二层数组遍历。

 4.例证:使用foreach遍历数组。

 4.例子:使用foreach遍历数组。

澳门葡京备用网址 14

再经过一个实例解惑

//3.-----------------------------------

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "<hr>";
foreach ($a as $key => $value) {
    echo "$key => $value <br>";

}
//3.-----------------------------------

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "<hr>";
foreach ($a as $key => $value) {
    echo "$key => $value <br>";

}

老是循环中,当前数组中单元的值被赋给 $value ,单元的key被赋给$key。如下图描述:

<?php
$a = array("1"=>"语文","2"=>"数学","3"=>"英语");
$b = array("1"=>"95","2"=>"99","3"=>"92");
foreach($a as $key=>$value){
  echo $value;
echo $b[$key]."<br>";
}
?>

澳门葡京备用网址 15

澳门葡京备用网址 16

澳门葡京备用网址 17

标题是干吗输出数组$b中的值要用$b[$key]而不是$b[$value]?

历次循环中,当前数组中单元的值被赋给 $value ,单元的key被赋给$key。如下图描述:

历次循环中,当前数组中单元的值被赋给 $value ,单元的key被赋给$key。如下图描述:

【注:】深紫红虚箭头表示给予某一值。

那是为啥吗?

澳门葡京备用网址 18

澳门葡京备用网址 19

 5.例子:在foreach遍历数组中,使用引用赋值。

$a = array(“1″=>”语文”,”2″=>”数学”,”3″=>”英语”);
上边这么些和下部那么些是一心平等的

【注:】赫色虚箭头表示给予某一值。

【注:】金红虚箭头表示给予某一值。

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "<hr>";
foreach ($a as $key => &$value) {
  $value.='n';
  echo "$key => $value <br>";

}

$a[1]=”语文”;
$a[2]=”数学”
$a[3]=“英语”

 

 

澳门葡京备用网址 20

我们输出下面的数组是怎么输出的吧?

 5.例子:在foreach遍历数组中,使用引用赋值。

 5.例子:在foreach遍历数组中,使用引用赋值。

历次循环中, $value
都对准当前数组中单元的值,再实践“ $value.=’n’; ”代码 ,如下图描述:

肯定是echo $a[1];

//4.-----------------------------------

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "<hr>";
foreach ($a as $key => &$value) {
    $value.='n';
    echo "$key => $value <br>";

}
//4.-----------------------------------

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "<hr>";
foreach ($a as $key => &$value) {
    $value.='n';
    echo "$key => $value <br>";

}

澳门葡京备用网址 21

对不对?

澳门葡京备用网址 22

澳门葡京备用网址 23

6.例证:对例子5的愈加分析。

如若没不寻常我们延续!!!!

老是循环中, $value
都针对当前数组中单元的值,再履行“ $value.=’n’;
”代码 ,如下图描述:

历次循环中, $value
都指向当前数组中单元的值,再实施“ $value.=’n’;
”代码 ,如下图描述:

在例子5,foreach遍历数组实现后,不会活动销毁$value变量,与数组$a末了三个单元$a[2]本着同八个多少。

------------------------------

 澳门葡京备用网址 24

 澳门葡京备用网址 25

这时改变$value的值,也正是改变了$a[2]的值。

简单说foreach

 

 

$value='m';

echo "<hr>";
echo "\$value=$value <br>";
echo var_dump($a);

它的格式是这般的foreach(数组名 as 下标=>值)

6.例证:对例子5的进一步分析。

6.例证:对例子5的更为分析。

澳门葡京备用网址 26

下标也正是上面的$a[1],那里的1正是数组的下标!

   
在例子5,foreach遍历数组实现后,不会活动销毁$value变量,与数组$a最终七个单元$a[2]针对同2个数量。

   
在例子5,foreach遍历数组达成后,不会活动销毁$value变量,与数组$a尾数单元$a[2]针对同一个数量。

澳门葡京备用网址 27

到这你应有知道了,为啥是$a[$key]诸如此类输出

那时改变$value的值,也正是改变了$a[2]的值。

此时改变$value的值,也正是改变了$a[2]的值。

实例证实, 数组最终一个成分的 $value 引用在 foreach
循环之后仍会保留。提出采取 unset() 来将其销毁。

您难忘不管怎么变,数组的出口方法永远是$a[1],不会是$a[‘语文’]

//5.-----------------------------------

$value='m';

echo "<hr>";
echo "\$value=$value <br>";
echo var_dump($a);
//5.-----------------------------------

$value='m';

echo "<hr>";
echo "\$value=$value <br>";
echo var_dump($a);

7.小结

================================================================

澳门葡京备用网址 28

澳门葡京备用网址 29

上述例子,只是描述php中的array数组和foreach的一部分特色。学习最终,感觉php中的array数组和foreach区别于其余编制程序语言,不可能使用类似C语言的布局解析PHP。

foreach()有二种用法:

 

 

如上就是笔者为我们带来的中肯领悟PHP中的Array数组和foreach全体内容了,希望我们多多支持脚本之家~

1: foreach(array_name as $value){
    statement;
  }

澳门葡京备用网址 30

澳门葡京备用网址 31

您大概感兴趣的文章:

  • JS中Array数组学习计算
  • 浅谈mwArray和一般数组的分裂
  • 数组Array的一些措施(总括)

 这里的array_name是您要遍历的数组名,每回循环中,array_name数组的当下元素的值被赋给$value,并且数组内部的下标向下移一步,也正是下次循环回获得下贰个成分。

实例证实, 数组最后1个要素的 $value 引用在 foreach
循环之后仍会保留。提出使用 unset() 来将其销毁。

实例证实, 数组最终1个要素的 $value 引用在 foreach
循环之后仍会保留。提出选用 unset() 来将其销毁。

2:foreach(array_name as $key => $value){    
    statement;  
 }  

 

 

 那里跟第二种艺术的分别正是多了个$key,也正是除了把最近因素的值赋给$value外,当前因素的键值也会在历次循环中被赋给变量$key。键值可以是下标值,也能够是字符串。比如book[0]=1中的“0”,book[id]=”001″中的“id”.

 7.小结

 7.小结

以上所述正是本文的全部内容了,希望我们能够喜欢。

如上例子,只是描述php中的array数组和foreach的有的特色。学习最终,感觉php中的array数组和foreach分化于其余编制程序语言,不可能运用类似C语言的构造解析PHP。

上述例子,只是描述php中的array数组和foreach的某些风味。学习最后,感觉php中的array数组和foreach分化于其他编制程序语言,不能够运用类似C语言的布局分析PHP。

你大概感兴趣的小说:

  • 浅谈PHP中有关foreach使用引用变量的坑
  • PHP
    数组遍历foreach语法结构及实例
  • PHP中央银行使foreach()遍历二维数组的容易实例
  • PHP模板引擎斯马特y内建函数foreach,foreachelse用法分析
  • 浅谈PHP中foreach/in_array的使用
  • php中使用in_array() foreach array_search()
    查找数组是或不是蕴涵时的性质相比较
  • 澳门葡京备用网址 ,PHP循环遍历数组的3种办法list()、each()和while总计
  • php下foreach提示Warning:Invalid argument supplied for
    foreach()的缓解方法
  • php each
    重回数组中当前的键值对并将数组指针向前挪动一步实例

 

 

(完.)

(完.)

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website