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

PHP is_array() 檢測變數是否為陣列完整用法

     編輯:PHP 相關知識

PHP is_array() 檢測變數是否為陣列完整用法

is_array() 是判斷變數型別為陣列的標準函式,常用於表單驗證、Session 檢查、API 回應處理等安全性相關場景。

語法

bool is_array(mixed $var)
  • 回傳 true:$var 為陣列
  • 回傳 false:非陣列(含 null、字串、整數、物件等)

基本範例

$arr = [18, 20, 25];
$str = "hello";
$num = 123;
$obj = new stdClass();

var_dump(is_array($arr)); // bool(true)
var_dump(is_array($str)); // bool(false)
var_dump(is_array($num)); // bool(false)
var_dump(is_array($obj)); // bool(false)
var_dump(is_array(null)); // bool(false)

實務應用場景

1. 表單多選欄位檢查

$hobbies = $_POST['hobby'] ?? [];
if (!is_array($hobbies)) {
    $hobbies = [$hobbies]; // 單值轉陣列
}
// 現在 $hobbies 保證是陣列,可安全 foreach

2. Session 資料驗證

$cart = $_SESSION['cart'] ?? [];
if (!is_array($cart)) {
    // 資料異常,重置
    $_SESSION['cart'] = [];
    $cart = [];
}

3. API 回應資料型別防護

$response = json_decode($json, true);
if (!is_array($response)) {
    throw new Exception('API 回應格式錯誤');
}
foreach ($response as $item) { ... }

4. 遞迴處理多維陣列前置檢查

function processArray($data) {
    if (!is_array($data)) {
        return $data; // 非陣列直接回傳
    }
    foreach ($data as $k => $v) {
        $data[$k] = processArray($v);
    }
    return $data;
}

相關函式比較

函式用途備註
is_array()檢測是否為陣列最常用、效能最好
is_object()檢測是否為物件
is_iterable()檢測可否 foreach (PHP 7.1+)陣列、Traversable 物件、Generator 均為 true
gettype()取得型別字串回傳 "array", "object", "string" 等

常見誤區

  • empty($arr) 為 true 不代表不是陣列(空陣列也是陣列)
  • count($arr) > 0 無法區分非陣列變數(會觸發警告)
  • 物件實作 ArrayAccess 可像陣列存取,但 is_array() 回傳 false

养成在遍歷、計數、存取陣列元素前先用 is_array() 守衛,能避免大量「Invalid argument supplied for foreach」等執行期錯誤。

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