首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

PHP 多維數組條件過濾:array_filter 實現按名稱或多字段查詢

     編輯:程式設計疑難解答

數據結構

$roots = [
    ['id'=>1, 'name'=>'a', 'state'=>1],
    ['id'=>2, 'name'=>'b', 'state'=>1],
    // ... 8000 條
];

單字段查詢(按 name)

$result = array_filter($roots, function($var) {
    return $var['name'] === 'a';
});

多字段查詢(name + state)

$result = array_filter($roots, function($var) {
    return $var['name'] === 'a' && $var['state'] === 1;
});

性能優化建議

  • 數據量大(>1萬)時:PHP 遍歷過濾較慢,建議:
    • 數據庫層面用 SQL WHERE name='a' AND state=1 完成篩選。
    • 或將數組建立索引:$index['a'] = [&$roots[0], &$roots[5], ...],查詢直接 O(1) 獲取引用。
  • 頻繁查詢:使用 array_column 提取單列配合 array_keys 定位:
    $ids = array_keys(array_column($roots, 'name'), 'a');

注意

array_filter 保留原鍵名,若需連續索引,結果用 array_values($result) 重置。

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