當前位置: 首頁> 最新文章列表> 如何結合is_bool 和array_filter 查找數組中的布爾值? PHP 示例講解

如何結合is_bool 和array_filter 查找數組中的布爾值? PHP 示例講解

gitbox 2025-09-09

如何結合is_bool 和array_filter 查找數組中的布爾值? PHP 示例講解

在PHP 中, is_bool函數可以用來檢查變量是否為布爾值,而array_filter函數可以根據指定的回調函數過濾數組中的元素。結合這兩者,我們可以輕鬆地從數組中篩選出布爾值元素。

1. 了解is_boolarray_filter

  • is_bool() : 用於檢查給定的變量是否是布爾類型。它返回true如果變量是布爾值( truefalse ),否則返回false

     <span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_bool</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>));  </span><span><span class="hljs-comment">// bool(true)</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-title function_ invoke__">is_bool</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>));     </span><span><span class="hljs-comment">// bool(false)</span></span><span>
    </span></span>
  • array_filter() : 這個函數用於過濾數組中的元素。它接收兩個參數:一個是要過濾的數組,另一個是一個回調函數。回調函數的作用是決定哪些元素需要保留,哪些需要刪除。如果回調函數返回true ,該元素就會被保留下來;如果返回false ,則會被移除。

     <span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>];
    </span><span><span class="hljs-variable">$filtered</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>, function(</span><span><span class="hljs-variable">$value</span></span><span>) {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span> &gt; </span><span><span class="hljs-number">2</span></span><span>;
    });
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filtered</span></span><span>);  </span><span><span class="hljs-comment">// 輸出 [3, 4, 5]</span></span><span>
    </span></span>

2. 結合使用is_boolarray_filter

通過結合is_boolarray_filter ,我們可以從數組中篩選出所有布爾值元素。我們可以通過一個簡單的回調函數來檢查每個元素是否是布爾值,若是布爾值,則將該元素保留下來。

示例:從數組中過濾出布爾值

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 示例數組</span></span><span>
</span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">"hello"</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>];

</span><span><span class="hljs-comment">// 使用 array_filter 和 is_bool 結合來篩選布爾值</span></span><span>
</span><span><span class="hljs-variable">$filteredArray</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, function(</span><span><span class="hljs-variable">$value</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">is_bool</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>);  </span><span><span class="hljs-comment">// 僅保留布爾值</span></span><span>
});

</span><span><span class="hljs-comment">// 打印結果</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filteredArray</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

結果輸出:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; 
    [</span><span><span class="hljs-meta">5</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-meta">7</span></span><span>] =&gt; 
)
</span></span>

在這個例子中, array_filter會遍歷$array數組中的所有元素,只有那些是布爾值( truefalse )的元素會被保留下來。注意, array_filter會保留原始數組的鍵。

3. 處理數組的鍵

array_filter默認會保留數組原有的鍵。如果你希望過濾後得到的數組鍵是連續的,可以使用array_values函數來重新索引數組。

示例:重新索引鍵

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">"hello"</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>];

</span><span><span class="hljs-comment">// 過濾布爾值並重新索引鍵</span></span><span>
</span><span><span class="hljs-variable">$filteredArray</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_values</span></span><span>(</span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, function(</span><span><span class="hljs-variable">$value</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">is_bool</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>);  // 僅保留布爾值
}));

</span><span><span class="hljs-comment">// 打印結果</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filteredArray</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

結果輸出:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; 
    [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; 
)
</span></span>

通過array_values ,我們得到了一個新的數組,其鍵從0 開始,並且依然保留了所有的布爾值。

4. 總結

通過結合使用is_boolarray_filter ,我們可以方便地從數組中篩選出所有布爾值元素。 array_filter提供了靈活的過濾功能,而is_bool則能準確判斷一個元素是否是布爾類型。這種方式非常適合在處理數據時需要精確篩選布爾值的場景。

在實際開發中,了解和掌握這些內置函數的配合使用,將會幫助你高效地處理數組數據。