zoukankan      html  css  js  c++  java
  • 第二节:类型数组:数组的难点在于基础

    首先PHP的数组不是实际上的数组而是一个有序映射。这个映射做了多方面的优化,可以把他当真正的数组使用。

    至于什么事真正的数组,什么是有序映射,目前没有研究。

    PHP在不明确指定key的情况下,对key进行自动添加,其中有些规律需要记住。

    key可以是integer或者string。如果key是一个integer的标准表示,则被解释为整数(例如”8“将被解释成8,而”08“还是”08“

    一.请问值(value)56的键(key)是什么。
    <?php
    array(5=>43,32,56,"b"=12);
    ?>
    二.请问值(value)77的键(key)是什么。
    <?php
    array(-5=>19,-4=>15,"c"=11,77);
    ?>
    三.请问值(value)6的键(key)是什么。
    <?php 
    $array=array(1,2,3,4,5);
    foreach($array as $i=>$value){
    unset($array[$i]); 
    }
    $array[]=6;
    ?>

    第一题的答案是7(PHP会对没有指定键名的值,取当前最大整数进行索引值,而新的键名将是该值加一。如果指定键名已经有了值,则该值会被覆盖。

    第二题的答案是0,因为其中没有最大的整数,那么就会从0开始索引。

    第三题的答案是5,unset函数会删除数组的值和KEY但是没有重新索引的话,还是会安装原来的索引值继续进行索引,索引这个玩意比较顽强啊。而且删除和索引是个分开的东西。(array_values()函数会对数组key进行从新索引)

    另外:如果使用true作为键名将使用integer 1成为键名。使用false作为键名将使用interger 0成为键名,使用NULL作为键名将等同于使用空字符串。其实还是PHP的自动识别替换功能,对象和数组就无法识别会报错。

    使用空字符串作为键名将新建(或覆盖)一个用空字符串作为键名的值,这和用空的方括号不一样!!!

    如下面的例子:

    <?php
    $row=array(0=>1,1=>2);
    $row[]=3;
    $row[NULL]=4;
    print_r($row);
    ?>

    输出结果是: Array ( [0] => 1 [1] => 2 [2] => 3 [] => 4 )

    很是诡异的东西。

     

  • 相关阅读:
    linux系列之-—03 压缩和解压缩命令
    Atlassian Confluence安装
    常见ODBC及OLEDB连接串的写法
    windows 怎么验证域名是否开启了 https
    Jenkins基础篇 系列之-—05 集成JIRA
    SVN系列之—-SVN版本回滚的办法
    JMeter 系列之—-02 创建数据库测试计划
    golang web框架 beego 学习 (一) 环境搭建
    补充 3:Golang 一些特性
    补充 1: panic 、recover、 defer
  • 原文地址:https://www.cnblogs.com/saw2012/p/2857823.html
Copyright © 2011-2022 走看看