2

私はこのような機能を持っています:

$arrayz = fetch_array_from_somewhere();
if($arrayz) {
   $arrayz['foo'] = 12;
} 

空になった場合arrayは false になります。何かがある場合は、その配列にデータを追加しているだけなので、何を持っているかは気にしません。if()このようにステートメントを使用しても大丈夫ですか?

オブジェクト配列に対する同じ質問 (代わりに $arrayz->foo = 12 のみ)?

または、空()を使用する必要がありますか?

編集1:オブジェクト配列と言うときを明確にするために、つまり、オブジェクトの配列です。

だから私は常に配列を取得することを知っています。何が入っているかは気にしません。

編集2:

array()したがって、結論として、通常の配列またはオブジェクト配列 (オブジェクトの配列) のいずれかであるフルまたは のいずれかの配列を取得できることがわかっている場合にのみ、この形式を使用する必要があります。

しかし、それ以外の何かが得られると思われる場合は、追加のチェックを使用する必要があります。

4

3 に答える 3

3

配列のみを返す場合fetch_array_from_somewhereは、これを行うことができます。空の配列は として評価されfalseます。

オブジェクトの場合、これを行うことはできません。オブジェクトは常にtrue、空のタグから作成された SimpleXML オブジェクトを除いて評価されます。

于 2012-09-21T12:55:53.260 に答える
2

自分のものを使用するか、次のいずれかを使用できます。

if(sizeof($array)){
    // has array values
}

これにより、配列のサイズがチェックされます。0 が返された場合は空です。たとえばif(sizeof($array) > 2){ // more than 2 array values }.

if(count($array)){
    // has array values
}

これは上記と同じです。

if(!empty($array)){
    // its not empty
}

これは、空 (配列値がない) か、まったく設定されていないか ( と同じisset())をチェックします。

ちょっと待って...

if(is_array($array)){
    // its an array
}

これは常にミックスに投入するのに適しています。文字列、数値、オブジェクト、および配列以外のものは、上記のすべてに一致します。配列にアクセスしようとする前に、扱っているものが実際に配列であることを確認する必要があります。

したがって、これは通常私のコードです:

if(is_array($array) && sizeof(array)){
   // manipulate
}
else {
  // isn't an array or doesn't have any values.
}
于 2012-09-21T13:00:39.157 に答える
1

使用empty()する方法です。関数がブール値を返す場合、ブール値チェックが使用されることになっています。

于 2012-09-21T12:53:11.600 に答える