Heim >Backend-Entwicklung >PHP-Tutorial > foreach学习遇到的有关问题(细说php 兄弟连)

foreach学习遇到的有关问题(细说php 兄弟连)

WBOY
WBOYOriginal
2016-06-13 13:45:401160Durchsuche

foreach学习遇到的问题(细说php 兄弟连)
书中代码如下

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php $contact=array(1,14=>"高某","A公司","北京市",14=>"(010)98765432","gao@php.com");
 $num=0;
 foreach($contact as $value)
 {
     echo"在数组\$contact中第".$num."个元素是:$value<br>";
     $num++;
 }
?>


输出结果如下:
在数组$contact中第0个元素是:1
在数组$contact中第1个元素是:(010)98765432
在数组$contact中第2个元素是:A公司
在数组$contact中第3个元素是:北京市
在数组$contact中第4个元素是:gao@php.com

小弟对于数组array存在困惑 其键与值的问题
第0个元素是1 这个我明白 那么第1个元素为什么会跳到电话号码呢?
14=>"高某"怎么算。。 然后是公司 北京市 邮箱 为什么会跳跃 不懂 求指点 

ps : 此书输出语句居然是【在数组\$contact中第$num个元素是:$value
】 你没的 连接符都没有。

------解决方案--------------------
数组运行机制.
从左到右 按 键值生成 内容.无键值情况 则 按 数字顺序生成 键值。

以上
左到右的情况中 键值 为 14 的有2个

数组现排序 按插入情况排列
[0] = 1 (1)
[14] = 高某 (2) [15] = A公司 (3)
------解决方案--------------------
晕,你重复定义了
array(
14=>"高某",
14=>"(010)98765432"
);
自然就被(010)98765432,覆盖了
但是按照数组的排列14=>"高某",原来排在第二个,
所以14=>"(010)98765432"排在第二个
------解决方案--------------------
PHP code


$contact = array(
    1,
    14 => "高某", 
    "A公司", 
    "北京市",
    14 => "(010)98765432",
    "gao@php.com");
// 格式化打印出来,如下:
echo '<pre class="brush:php;toolbar:false">';print_r($contact);
/*
Array
(
    [0] => 1
    [14] => (010)98765432
    [15] => A公司
    [16] => 北京市
    [17] => gao@php.com
)
*/

// 由此可以看出后面的“(010)98765432”将前面的“高某”覆盖了,这是为什么呢?因为php中同维度数组中不允许存在相同的键,你可以将键看成人的身份证号码,值看成是人的名字,名字有相同而身份证号不会有相同。之后数组变成如下:
$contact=array(1,14=>"(010)98765432","A公司","北京市","gao@php.com");

//这个时候因为"A公司","北京市","gao@php.com"这三个在键14的后面,那么它们的键不会再从1开始了,而是接着14开始,也就是15
//咱们再看个例子(将"A公司"移动到1的后面):
$contact=array(1,"A公司",14=>"(010)98765432","北京市","gao@php.com");
echo '<pre class="brush:php;toolbar:false">';print_r($contact);

//结果输出如下:
/*
Array
(
    [0] => 1
    [1] => A公司
    [14] => (010)98765432
    [15] => 北京市
    [16] => gao@php.com
)
*/ <div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn