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 )

    很是诡异的东西。

     

  • 相关阅读:
    【转】java对File.listFiles()排序
    java 获取当前目录文件名
    python批量创建文件夹
    [好课推荐]数据结构与算法python实现
    SCI论文重复率与降重
    [转]一图搞定Matplotlib
    [GitHub寻宝]机器学习实战python3代码分享
    [好课推荐]人工智能实践:Tensorflow2.0
    [转]用深度学习给黑白照片上色
    java split函数分割字符串
  • 原文地址:https://www.cnblogs.com/saw2012/p/2857823.html
Copyright © 2011-2022 走看看