[PHP從小白到大牛]-016 PHP數組簡介

1.數組簡介及分類

數組定義

  • 數組是PHP中的重要數組類型之一,是複合類型
  • 數據的集合,在PHP中數組是一個有序映射

數組分類

  • 索引數組php

    • 數組的下標是數字
    D:\php20190701\php_code\0807\array.php:10:
    array (size=3)
      0 => string 'first' (length=5)
      1 => string 'second' (length=6)
      2 => string 'third' (length=5)
    複製代碼
  • 關聯數組數組

    • 數組的下標爲字符是關聯數組
    D:\php20190701\php_code\0807\array.php:10:
    array (size=3)
      'one' => string 'first' (length=5)
      'two' => string 'second' (length=6)
      'three' => string 'third' (length=5)
    複製代碼
  • 注意bash

    • PHP中數組實際上是不區分索引仍是關聯數組,都是根據鍵名找到對應的鍵值

2.定義數組

經過array()形式

<?php


$arr = array(
	'one'=>'first',
	'two'=>'second',
	'three'=>'third'
);

var_dump($arr);
複製代碼
  • array()空數組
<?php


$arr = array(); // 空數組
$arr1 = []; // 空數組
複製代碼
  • array(值,...)下標連續的索引數組,下標從0開始
  • array(鍵名=>鍵值,...)指定下標的索引數組、關聯數組、混合數組
<?php


$arr = array(
	'first'=>123,
	'second'=>'hello',
	'third'=>array(
		'hello',
		'world'
	),
	'forth'=>array(
		'one'=>'hello',
		'two'=>'world'
	)
); 
複製代碼
  • 經過[]的形式定義數組,代替array()spa

  • 注意code

    • 檢測是否爲數組對象

      • var_dump()
      • gettype() // 返回array
      • is_array() // 返回true
    • 數組鍵名索引

      • 使用合法的數字字符串
      <?php
      
      
      $arr = [
      	1=>'first',
      	'1'=>'second' // 會覆蓋
      ];
      
      var_dump($arr);
      複製代碼
      • 浮點數會舍掉小數部分,取整做爲鍵名
      <?php
      
      
      $arr = [
      	1.1=>'first',
      	2.2=>'second',
      	2.3=>'third', // 會把second覆蓋掉
      ];
      
      var_dump($arr); 
      複製代碼
      D:\php20190701\php_code\0807\array2.php:10:
      array (size=2)
        1 => string 'first' (length=5)
        2 => string 'second' (length=6)
      複製代碼
      • 布爾true->1,false->0
      <?php
      
      
      $arr = [
      	true=>'first',
      	false=>'second'
      ];
      
      var_dump($arr);
      複製代碼
      D:\php20190701\php_code\0807\array2.php:9:
      array (size=2)
        1 => string 'first' (length=5)
        0 => string 'second' (length=6)
      複製代碼
      • null->空字符串
      <?php
      
      
      $arr = [
      	null=>'first', // 會轉成空字符串
      	'1'=>'second' 
      ];
      
      var_dump($arr);
      
      var_dump($arr['']); // 能夠使用空字符串來取值
      複製代碼
      • 鍵名重複,後面的會覆蓋以前的鍵值(value), 1和"1"是重複鍵(key)名
      • 若是沒有指定鍵名,並且鍵名不都爲負數,新添加的元素的鍵名爲已有鍵名最大值加1
      <?php
      
      
      $arr = [
      	1=>'first', // 會轉成空字符串
      	11=>'second',
      	'three'=>'third'
      ];
      
      
      $arr[] = "forth";
      
      var_dump($arr);
      複製代碼
      • 若是鍵名都爲負數,那麼新添加的元素鍵名從0開始
      <?php
      
      
      $arr = [
      	-2=>'first', // 會轉成空字符串
      	-11=>'second',
      	'three'=>'third'
      ];
      
      
      $arr[] = "forth";
      
      var_dump($arr);
      複製代碼
      D:\php20190701\php_code\0807\array2.php:13:
      array (size=4)
        -2 => string 'first' (length=5)
        -11 => string 'second' (length=6)
        'three' => string 'third' (length=5)
        0 => string 'forth' (length=5)
      複製代碼

經過[]動態建立

  • $數組名稱[]=值
    • 下標連續的索引數組
<?php
    
$arr = [];
$arr[] = 'first';
$arr[] = 'second';
$arr[] = 'third';
$arr[] = 'forth';
$arr[] = 'fifth';
$arr[] = 'sixth';
$arr[] = 'seventh';

var_dump($arr);
複製代碼
D:\php20190701\php_code\0807\array2.php:13:
array (size=7)
  0 => string 'first' (length=5)
  1 => string 'second' (length=6)
  2 => string 'third' (length=5)
  3 => string 'forth' (length=5)
  4 => string 'fifth' (length=5)
  5 => string 'sixth' (length=5)
  6 => string 'seventh' (length=7)
複製代碼
  • $數組名稱[鍵名]=值
    • 指定下標的索引數組和關聯數組
<?php


$arr = [];
$arr['one'] = 'first';
$arr['two'] = 'second';
$arr['three'] = 'third';
$arr[] = 'forth';
$arr[] = 'fifth';
$arr[] = 'sixth';
$arr['seven'] = 'seventh';

var_dump($arr);
複製代碼
D:\php20190701\php_code\0807\array2.php:13:
array (size=7)
  'one' => string 'first' (length=5)
  'two' => string 'second' (length=6)
  'three' => string 'third' (length=5)
  0 => string 'forth' (length=5)
  1 => string 'fifth' (length=5)
  2 => string 'sixth' (length=5)
  'seven' => string 'seventh' (length=7)
複製代碼

經過range()和compact()快速建立

  • range()快速建立下標連續的索引數組
    • 第一個參數: 開始
    • 第二個參數: 結束
    • 第三個參數: 步長
    • 包含開始和結束
<?php
var_dump(range(1,10,1));
複製代碼
D:\php20190701\php_code\0807\array2.php:5:
array (size=10)
  0 => int 1
  1 => int 2
  2 => int 3
  3 => int 4
  4 => int 5
  5 => int 6
  6 => int 7
  7 => int 8
  8 => int 9
  9 => int 10
複製代碼
  • compact()快速建立關聯數組, 參數爲變量名(字符串)
<?php

$username = "zhangsan";
$age = 18;
$sex = 'male';


$userinfo = compact('username','age','sex');

var_dump($userinfo);
複製代碼

經過define()定義常量數組

<?php

define('HELLO',['hello','world']);

var_dump(HELLO);

HELLO[0] = "!!!"; // 報錯
複製代碼

3.使用數組

原則

  • 根據鍵名找鍵值
  • 數組名稱[鍵名]|數組名稱{鍵名}
<?php

$arr = ['hello','world'];

echo $arr{0};
複製代碼

4.其它類型轉換成數組

臨時轉換

  • (array)$var

永久轉換

  • settype(var,type)

注意

  • 標量類型轉換成數組,只有一個元素,鍵名爲0,鍵值爲變量的值
  • null轉換成數組是空數組, 不是[0=>null]
  • 不要把對象和資源轉換成數組

5.數組運算符

+運算符

  • 合併數組,若是鍵名相同,使用前面數組的鍵值
<?php

$arr1 = [
	'hello','world'
];

$arr2 = [
	'hello','php'
];

var_dump($arr1+$arr2);
複製代碼
D:\php20190701\php_code\0807\array_op.php:11:
array (size=2)
  0 => string 'hello' (length=5)
  1 => string 'world' (length=5)
複製代碼

==

  • 只比較鍵名和鍵值是否相同,若是相同返回true,不然返回false
<?php

$arr1 = [
	0=>'1',
	1=>'world'
];

$arr2 = [
	"0"=>1,
	"1"=>'world'
];

var_dump($arr1 == $arr2); // true, 不比較順序
複製代碼

===

  • 既要比較鍵名和鍵值是否相同,還要比較類型和順序
<?php

$arr1 = [
	0=>'1',
	1=>'world',
];

$arr2 = [
	"0"=>'1',
	"1"=>'world',
];

var_dump($arr1 === $arr2); // 下標, 值的類型, 順序都必須同樣
複製代碼

!= <>

  • 至關於取反

!==

  • 至關於取反
相關文章
相關標籤/搜索