配列が空かどうか、またはループを使用せずにこれを行うにはどうすればよいかを確認するために PHP で利用できる関数はありますか?
例えば:$b = array('key1' => '', 'key2' => '', 'key3' => '', 'key4' => '');
ループを使用せずに、配列 $b に空の値が含まれていることを確認するにはどうすればよいですか?
単純:
function allEmpty($array)
{
return empty(array_filter($array)); // (PHP < 5.3) or
$array = array_filter($array); return empty($array); // (PHP >= 5.3) or just
return array_filter($array) === array();
}
function someEmpty($array)
{
return ($array !== array_filter($array));
}
ループ関数を使用する場合でも配列関数を使用する場合でも、配列をループ処理しているので、単純にして配列をループ処理するだけです。
function isEmpty($arr) {
foreach ($arr as $k => $v) {
if ($v) {
return false;
}
}
return true;
}
何を空として定義するかによって、空の文字列のみをチェックしたい場合があります。
function isEmpty($arr) {
foreach ($arr as $k => $v) {
if ($v === '') {
return false;
}
}
return true;
}
それがチェックしたい特定の配列である場合(つまり、key =>値のみがあり、空は常にkey =>'')...
$b = array('key1' => '', 'key2' => '', 'key3' => '', 'key4' => '');
$temp = array_flip($b);
if(count($temp) === 1 && empty($temp[0])){
echo 'empty';
}
それ以外の場合は、ループを使用する必要があります...ごめんなさい。
空の文字列をチェックしたい場合は、 in_array''
を使用できます
if(!in_array('', $array)) echo 'array doesn’t contain empty strings';
if(in_array('', $array)) echo 'array does contain at least one empty string';
空のコールバック メソッドでarray_filterを試して、それを空の配列と比較する (または を使用するempty()
)こともできます。
if(empty(array_filter($array))) echo 'array only contains values evaluating to false';
簡単に言えば、いいえ。
リテラルの foreach/for/while を実行したくない場合は、array_walkを使用できます。
私は通常、次の条件を使用して確認します。
if(is_array($array) and count($array)) {
// ... code here ...
}
それで全部です。
シンプルな
if(!array_filter($array)){
//Is empty
}
else
{
//Is not empty
}
仕事をする。