2

配列が空かどうか、またはループを使用せずにこれを行うにはどうすればよいかを確認するために PHP で利用できる関数はありますか?

例えば:$b = array('key1' => '', 'key2' => '', 'key3' => '', 'key4' => '');

ループを使用せずに、配列 $b に空の値が含まれていることを確認するにはどうすればよいですか?

4

7 に答える 7

14

単純:

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));
}
于 2009-08-26T06:44:19.900 に答える
3

ループ関数を使用する場合でも配列関数を使用する場合でも、配列をループ処理しているので、単純にして配列をループ処理するだけです。

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;
}
于 2009-08-26T06:41:24.133 に答える
1

それがチェックしたい特定の配列である場合(つまり、key =>値のみがあり、空は常にkey =>'')...

$b = array('key1' => '', 'key2' => '', 'key3' => '', 'key4' => '');
$temp = array_flip($b);
if(count($temp) === 1 && empty($temp[0])){
    echo 'empty';
}

それ以外の場合は、ループを使用する必要があります...ごめんなさい。

于 2009-08-26T06:59:48.090 に答える
1

空の文字列をチェックしたい場合は、 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';
于 2009-08-26T06:42:56.610 に答える
1

簡単に言えば、いいえ。

リテラルの foreach/for/while を実行したくない場合は、array_walkを使用できます。

于 2009-08-26T06:43:39.667 に答える
0

私は通常、次の条件を使用して確認します。

if(is_array($array) and count($array)) {
 //  ... code here ...
}

それで全部です。

于 2009-08-26T07:43:25.663 に答える
0

シンプルな

if(!array_filter($array)){
  //Is empty
}
else
{
  //Is not empty
}

仕事をする。

于 2012-09-05T00:25:42.707 に答える