在PHP 中, is_bool函數可以用來檢查變量是否為布爾值,而array_filter函數可以根據指定的回調函數過濾數組中的元素。結合這兩者,我們可以輕鬆地從數組中篩選出布爾值元素。
is_bool() : 用於檢查給定的變量是否是布爾類型。它返回true如果變量是布爾值( true或false ),否則返回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> > </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>
通過結合is_bool和array_filter ,我們可以從數組中篩選出所有布爾值元素。我們可以通過一個簡單的回調函數來檢查每個元素是否是布爾值,若是布爾值,則將該元素保留下來。
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-meta">1</span></span><span>] =>
[</span><span><span class="hljs-meta">5</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-meta">7</span></span><span>] =>
)
</span></span>
在這個例子中, array_filter會遍歷$array數組中的所有元素,只有那些是布爾值( true或false )的元素會被保留下來。注意, array_filter會保留原始數組的鍵。
array_filter默認會保留數組原有的鍵。如果你希望過濾後得到的數組鍵是連續的,可以使用array_values函數來重新索引數組。
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-meta">1</span></span><span>] =>
[</span><span><span class="hljs-meta">2</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-meta">3</span></span><span>] =>
)
</span></span>
通過array_values ,我們得到了一個新的數組,其鍵從0 開始,並且依然保留了所有的布爾值。
通過結合使用is_bool和array_filter ,我們可以方便地從數組中篩選出所有布爾值元素。 array_filter提供了靈活的過濾功能,而is_bool則能準確判斷一個元素是否是布爾類型。這種方式非常適合在處理數據時需要精確篩選布爾值的場景。
在實際開發中,了解和掌握這些內置函數的配合使用,將會幫助你高效地處理數組數據。
相關標籤:
array_filter