zoukankan      html  css  js  c++  java
  • PHP 简单、关联、多维、多维关联数组

    前言

    本文简记数组、关联数组、多维数组、多维关联混合数组的格式、调用、添加、删除。

    特别注意

    • 注意 1

      索引或者 key 基本上是一个东西,只不过 key => value 是将索引设定为自己的 key 值。

      key 值可以是数字,也可以是字符串。

    • 注意 2

      如果自己声明时 key 值是数字,将会替换系统默认的索引为 key 对应的 value 。

    • 注意 3

      如果自己声明时 key 值是字符串,但是是整数,系统将自动去掉引号。

      $numbers['1'] 等同于 $numbers[1]

    • 注意 4

      数组在执行添加时,未曾添加或者删除过的索引项,在执行添加操作时,无论索引是数字,还是字符串,无论数字是否比之前最大的索引值大,还是字符串的字母大小比之前最大的索引值大,都是在数组末尾添加。

      比如向索引只有 0、2 的数组 array(2) {[0]=> int(0) [2]=> int(2)} 中添加索引为 1 的元素 $numbers[1] = 1; 结果为:

      array(3) {
        [0]=> int(0)
        [2]=> int(2)
        [1]=> int(1)
      }
      
    • 注意 5

      数组在执行删除时,与 "注意 4" 同理。

    数组

    格式

    • 示例

      $numbers = [0, 1, 2, 3];
      

      本质:

      array(4) {
        [0]=> int(0)
        [1]=> int(1)
        [2]=> int(2)
        [3]=> int(3)
      }
      

    调用

    • 指定 key (索引)调用:

      这时的 key 就是默认的索引顺序。

      echo $numbers['1']."<br>";
      或
      for ($n = 0; $n<4; $n++) {
          echo $numbers[$n]."<br>";
      }
      
    • foreach 遍历调用:

      foreach ($numbers as $number) {
          echo $number."<br>";
      }
      
    • foreach 遍历调用变形:

      foreach ($numbers as $number) :
          echo $number."<br>";
      endforeach;
      

      一般用于 PHP 文件的 HTML 中:

      <ul>
          <?php foreach ($numbers as $number) : ?>
          <li><?php echo $number;?></li>
          <?php endforeach; ?>
      </ul>
      

    添加

    • 添加声明:

      数组长度加 +1 ,添加在末尾。

      $numbers[] = 4;
      
    • 指定 key (索引)添加:

      $numbers[5] = 5;
      $numbers['5'] = 5;
      

    删除

    • 指定索引删除:

      unset($numbers[1]); 
      
    • 指定 key 删除:

      这时的 key 就是默认的索引顺序。

      unset($numbers['1']); 
      

    关联数组

    格式

    • 示例:

      $numbers = [
          'zero' => 0,
          'one' => 1,
          'two' => 2,
          'three' => 3];
      

      本质:

      array(4) {
        ["zero"]=> int(0)
        ["one"]=> int(1)
        ["two"]=> int(2)
        ["three"]=> int(3)
      }
      

    调用

    • 指定 key (索引)调用:

      这里的索引就是 key 。

      echo $numbers['zero']."<br>";
      
    • foreach 遍历 value 调用:

      foreach ($numbers as $number) {
          echo $number."<br>";
      }
      
    • foreach 遍历 key => value 调用:

      foreach ($numbers as $numberName => $number) {
          echo "name:".$numberName."<br>number:".$number."<hr>";
      }
      

    添加

    • 注意:这时指定索引添加,使用的索引就是它的 key :

      $numbers[1] = 4;
      $numbers['1'] = 4;
      
    • 指定 key 添加:

      $numbers['four'] = 4;
      

    删除

    • 指定 key (索引)删除:

      这里的索引就是 key 。

      unset($numbers['one']);
      

    多维数组

    格式

    • 示例:

      $numbers = [
          [0, 1],
          [1, 2],
          [2, 3],
          [3, 4]
      ];
      

      本质:

      array(4) {
        [0]=> array(2) {
          [0]=> int(0)
          [1]=> int(1)
        }
        [1]=> array(2) {
          [0]=> int(1)
          [1]=> int(2)
        }
        [2]=> array(2) {
          [0]=> int(2)
          [1]=> int(3)
        }
        [3]=> array(2) {
          [0]=> int(3)
          [1]=> int(4)
        }
      }
      

    调用

    • 多维索引指定调用:

      对于多维数组来说,通过单个索引得到的变量也是一个数组。当直接 echo 数组变量时,会报错。

      echo $numbers[0][0]."<br>";
      
    • foreach 遍历 value 调用:

      foreach ($numbers as $number) {
          foreach ($number as $num) {
              echo $num."<br>";
          }
          echo "<hr>";
      }
      

    添加

    • 添加声明:

      数组长度加 +1 ,添加在末尾。

      $numbers[] = [4, 5];
      
    • 指定 key (索引)添加:

      $numbers[4] = [4, 5];
      $numbers['4'] = [4, 5];
      

    删除

    • 指定一级索引删除一级数组:

      这时删除了索引为 1 的整个数组,多维数组中一级数组个数 -1 。

      unset($numbers[1]);
      
    • 指定多维索引删除最后一级数组/元素:

      这时只删除了索引为 1 数组内的第一个元素。

      unset($numbers[1][1]);
      

    多维关联混合数组

    格式

    • 示例:

      $numbers = [
          'zero' => ['zero0' => 0, 'zero1' => 1],
          'one' => ['one1' => 1, 'one2' => 2],
          'two' => ['two1' => 2, 'two2' => 3],
          'three' => ['three1' => 3, 'three2' => 4]
      ];
      
    • 本质:

      array(4) {
        ["zero"]=> array(2) {
          ["zero0"]=> int(0)
          ["zero1"]=> int(1)
        }
        ["one"]=> array(2) {
          ["one1"]=> int(1)
          ["one2"]=> int(2)
        }
        ["two"]=> array(2) {
          ["two1"]=> int(2)
          ["two2"]=> int(3)
        }
        ["three"]=> array(2) {
          ["three1"]=> int(3)
          ["three2"]=> int(4)
        }
      }
      

    调用

    • 指定多维 key (索引)调用:

      echo $numbers['zero']['zero1']."<br>";
      
    • foreach 多维遍历 value 调用:

      foreach ($numbers as $number) {
          foreach ($number as $num) {
              echo $num."<br>";
          }
          echo "<hr>";
      }
      
    • foreach 多维遍历 key => value 调用:

      foreach ($numbers as $numberKey => $numberValue) {
          foreach ($numberValue as $numKey => $numValue) {
              echo $numberKey." => ".$numKey." => ".$numValue."<br>";
          }
          echo "<hr>";
      }
      

    添加

    • 指定 key 添加:

      数组长度加 +1 ,添加在末尾。

      $numbers['four'] = ['four1' => 4, 'four2' => 5];
      

    删除

    • 指定一级 key 删除一级关联数组:

      这时删除了整个 one 关联数组。

      unset($numbers['one']);
      
    • 指定多维 key 删除最后一级关联数组/元素:

      这时只删除了 one 关联数组内的第一个 key => value。

      unset($numbers['one']['one1']);
      
  • 相关阅读:
    nodejs事件和事件循环详解
    keycloak集群化的思考
    Python解释器和IPython
    IndexedDB详解
    在onelogin中使用OpenId Connect Implicit Flow
    在onelogin中使用OpenId Connect Authentication Flow
    SAML和OAuth2这两种SSO协议的区别
    wildfly 21的配置文件和资源管理
    【老孟Flutter】2021 年 Flutter 官方路线图
    【老孟Flutter】为什么 build 方法放在 State 中而不是在 StatefulWidget 中
  • 原文地址:https://www.cnblogs.com/Yogile/p/13547962.html
Copyright © 2011-2022 走看看