2011-06-08 9 views
0

私はこのコードを持っています。配列の位置が空であるか、または入力がゼロに等しいかを基本的に識別します。foreachの疑問 -

$fields = array("first", "second", "third"); 

function check($fields, $form) { 
    foreach($fields as $field) { 
     if(empty($form[$field]) || $form[$field] === 0) { 
      echo 'empty'; 
      return false; 
      break; 
     } 
    } 
} 

私の疑問が今、どのように私は2番目の位置が空であることを示すためにエコーを行うことができますか?

if? if ($form[$field][second])

if(empty($form[2]) || $form[2] === 0) { 
    echo 'second element is empty'; 
} 

あなたの質問は、「どのように私が知ることができますされている場合:私は 感謝

+0

私はこの問題が尋ねていることを信じていますが、関数が*どの*位置が空であるかを示すことができます(これは現時点でtrueまたはfalseを返します)。 –

+2

FYI、 'false'、' null'、 '0'、空文字列の場合だからあなたの '|| ... === 0'はちょうど冗長です。値を 'false'または' null'にする場合は 'empty'チェックを外してください。しかし、どちらも絶対必要ではありません。 –

+0

@Chris質問を明確にしてくれてありがとう。 – user773961

答えて

2

$fieldはあなたがechoに望むものであるならば、単に「空である」にそれを付加:

$fields = array("first", "second", "third"); 

function check($fields, $form) 
{ 
    foreach($fields as $field) 
    { 
     if(empty($form[$field])) 
     { 
      echo $field.' is empty'; 
      return false; 
     } 
    } 
} 

あなたは、インデックスの値が必要な場合:目的は、空を取得している場合、最終的

$fields = array("first", "second", "third"); 

function check($fields, $form) 
{ 
    foreach($fields as $k=>$field) 
    { 
     if(empty($form[$field])) 
     { 
      echo $k.' is empty'; 
      return false; 
     } 
    } 
} 

を(check-1を返した場合、空のポジションは存在しません)。

$fields = array("first", "second", "third"); 
function check($fields, $form) 
{ 
    foreach($fields as $k=>$field) 
    { 
     if(empty($form[$field])) 
      return $k; 
    } 
    return -1; 
} 
+0

素晴らしい答え。ありがとうございます – user773961

+0

ようこそ! – Dalen

-1

は、たぶん私は全く違和感でんだけど、なぜこれが正しいかどうかを知り、またはより良いオプションは存在しません。

$fields = array("first", "second", "third"); 

function check($fields, $form) { 
    foreach($fields as $i => $field) { 
     if ((empty($form[$field]) || $form[$field] === 0) && ($i == 2)) { 
      echo '2n element is empty'; 
      return false; // no need to break; as you have returned something. 
     } 
    } 
} 
0

では、次のような何かをすることはできません:どのような指標私はforeach「をやっている間、その答えはということです

if (empty($form[$field+1])) { 
    echo 'Empty'; 
} 
0

は次のように再帰関数を使用します。

function isEmpty($array){ 
    if(is_array($array)){ 
     foreach($array as $key=>$value){ 
      if(isEmpty($value) !== false) return $key; 
     } 
     return false; 
    }else{ 
     if($array === 0 || empty($array)){ 
      return true; 
     } 
    } 
} 

これは深いそれが行くように、アレイを横断し、それが空の位置を見つけなかった場合、それは空の位置、または虚偽のを発見したインデックスを返します。