180

配列に複数の要素があるかどうかを確認する必要があります。私はそれをこのようにしようとしています:

if (isset($arr['1']))

他の伝統的な方法は

if (sizeof($arr)>1)

2つのうちどちらが良いですか?そのような状況では、2つの代替方法をどのように判断する必要がありますか?どちらが良いかを測定するために利用できるパフォーマンスチェックメーターはありますか?

4

11 に答える 11

346

これを使って

if (sizeof($arr) > 1) {
     ....
}

または

if (count($arr) > 1) {
     ....
}

sizeof()のエイリアスでcount()あり、同じように機能します。

編集: 質問の2番目の部分に答える:質問の2行のコードは代替方法ではなく、異なる機能を実行します。1 つ目は at の値が設定されているかどうかをチェック$arr['1']し、2 つ目は配列内の要素数を返します。

于 2012-04-05T08:14:14.260 に答える
44

if(is_array($arr) && count($arr) > 1)

$arrが実際に配列であることを確認するためだけに。

sizeofのエイリアスです。次のcount理由でcountを使用することをお勧めします。

  1. 入力する文字が1つ少なくなります
  2. sizeofは一見すると、メモリの観点から配列のサイズを意味する可能性があり、技術的すぎます:(
于 2012-04-05T08:11:58.810 に答える
6
if (count($arr) >= 2)
{
  // array has at least 2 elements
}

sizeof()のエイリアスですcount()。どちらも非配列でも機能しますが、引数が array またはobjectの場合にのみ 1 より大きい値を返すCountableため、これでかなり安全です。

于 2012-04-05T08:13:52.933 に答える
6

明らかにcount($arr) > 1(sizeofは の単なるエイリアスですcount) を使用することが最善の解決策です。配列の構造によっては、大量の要素があっても要素がない場合があり$array['1']ます。

于 2012-04-05T08:13:59.557 に答える
4

配列のチェックには、sizeof() より empty() の方が優れています。

配列に大量のデータが含まれている場合。配列のサイズをカウントするには、さらに時間がかかります。しかし、空のチェックはいつでも簡単です。

//for empty
  if(!empty($array))
     echo 'Data exist';
  else 
     echo 'No data';


 //for sizeof
 if(sizeof($array)>1)
      echo 'Data exist';
 else 
    echo 'No data';
于 2015-07-22T07:05:36.683 に答える
3

isset()は、変数が設定されているかどうかのみをチェックします。サイズや配列に含まれる内容とは何の関係もありません。

于 2012-04-05T08:11:32.603 に答える
2

$arr が配列であると仮定すると、これがあなたが探しているものです

if ( sizeof($arr) > 1) ...
于 2012-04-05T08:13:28.097 に答える
1

最初の方法 if (isset($arr['1'])) は、連想配列では機能しません。

たとえば、次のコードは「いいえ、複数ではありません」と表示します。

$arr = array(
    'a' => 'apple',
    'b' => 'banana',
);

if (isset($arr['1'])) {
    echo "Yup, more than one.";
} else {
    echo "Nope, not more than one.";
}
于 2014-10-22T20:06:36.780 に答える