首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 入門教學:建立一維陣列注意事項與核心函式速查

     編輯:PHP 綜合知識

PHP 陣列機制獨特 (有序映射),建立與操作時有幾個關鍵行為必須理解,否則易產生難以預期的 Bug。

四大注意事項

1. 未指定索引時自動遞增 (基於現有最大整數索引)

<?php
$arr = [5 => 'www.bianceng.cn', 123, 50];
// 索引 5 已存在,下一個 123 自動獲指派索引 6,50 獲指派 7
var_dump($arr);
/* 輸出:
array(3) {
  [5]=> string(17) "www.bianceng.cn"
  [6]=> int(123)
  [7]=> int(50)
}
*/
?>

陷阱:混用指定索引與自動索引時,索引可能不連續、不從 0 開始,for ($i=0; $i 會遺漏/報錯,必須用 foreach。

2. 特殊鍵名自動轉型規則

寫法實際鍵名說明
$arr[true] = 'a'1布林 true → 整數 1
$arr[false] = 'b'0布林 false → 整數 0
$arr[null] = 'c''' (空字串)null 等同空字串鍵
$arr['123'] = 'd'123 (整數)數字字串鍵自動轉整數 (不含前導零)
$arr['0123'] = 'e''0123' (字串)前導零字串保持字串型別
$arr[1.5] = 'f'1浮點數截斷為整數
<?php
$arr[true] = 'hello';
$arr[null] = '北京';
echo $arr[1];      // hello
echo $arr[''];     // 北京
?>

3. print_r / var_dump 除錯輸出差異

<?php
$arr[true] = 'www.bianceng.cn';
$arr[false] = '北京';
print_r($arr);
/* 輸出:
Array
(
    [1] => www.bianceng.cn
    [0] => 北京
)
*/
var_dump($arr);
/* 輸出:
array(2) {
  [1]=> string(17) "www.bianceng.cn"
  [0]=> string(6) "北京"
}
*/
?>
  • print_r:較易讀,適合快速檢視結構。
  • var_dump:含型別、長度、索引型別,適合深度除錯。
  • 兩者皆不處理遞迴參考 (會顯示 *RECURSION*),var_export 可輸出可執行 PHP 程式碼。

4. 陣列動態增長 (索引自動擴展)

<?php
$a = [2, 3];
print_r($a);   // [0=>2, 1=>3]
$a[2] = 'www.bianceng.cn';  // 直接指派新索引,陣列自動增長
print_r($a);   // [0=>2, 1=>3, 2=>'www.bianceng.cn']
?>

無需預先宣告大小,PHP 陣列本質為動態雜湊表 + 雙向鏈表,支援任意索引插入/刪除。

五大核心陣列函式速查

函式用途語法範例
count統計元素個數count($arr [, mode])count($arr)、count($arr, COUNT_RECURSIVE)
is_array判斷是否為陣列is_array($var)if (is_array($x)) ...
print_r人類可讀輸出結構print_r($arr [, true])print_r($arr)、$s = print_r($arr, true)
var_dump完整型別/長度輸出var_dump($arr)var_dump($arr)
explode字串分割為陣列explode(分隔字串, 字串 [, limit])explode(' ', '北京 上海 天津')
implode陣列合併為字串 (別名 join)implode(分隔字串, $arr)implode(',', [1,2,3])
sort值排序 (重設索引)sort($arr [, flags])sort($arr, SORT_NUMERIC)

實戰範例:字串分割與排序

<?php
$str = '北京 上海 天津 深圳 青島 廣州';
$arr = explode(' ', $str);  // 空白分割
print_r($arr);
sort($arr);  // 字典序排序
print_r($arr);
/* 排序後:
Array
(
    [0] => 上海
    [1] => 北京
    [2] => 廣州
    [3] => 天津
    [4] => 青島
    [5] => 深圳
)
*/
?>

遍歷陣列:for vs foreach

<?php
$colors = ['red', 'blue', 'green', 'yellow'];

// for 迴圈 (僅適用連續整數索引)
for ($i = 0; $i < count($colors); $i++) {
    echo $colors[$i] . '<br />';
}

// foreach (通用、推薦)
foreach ($colors as $key => $var) {
    echo $var . '<br />';
}
?>

unset 刪除元素:索引不重建

<?php
$arr[0] = 123; $arr[1] = 456; $arr[2] = 'hello';
unset($arr[1]);  // 刪除索引 1
print_r($arr);
/* 輸出:
Array
(
    [0] => 123
    [2] => hello   // 索引 2 保持不變,不會重排為 1
)
*/
// 若需重排索引:
$arr = array_values($arr);  // [0=>123, 1=>hello]
?>

理解上述機制與函式,能避開 90% PHP 陣列操作陷阱,寫出可預期、可維護的資料處理程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved