2011-06-08 124 views
0

我有这段代码。基本确定阵列的任何位置是空的还是输入等于零。怀疑在foreach -php

$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; 
     } 
    } 
} 

我怀疑现在是,我该怎么办回声的例子来说明第二位置是空的?

用if? if ($form[$field][second])?我不知道这是否正确,或存在更好的选择 感谢

+0

我相信这个问题所问的是,函数如何指示*哪个位置是空的(因为这只是返回true或false,而不是违规位置) – 2011-06-08 15:41:12

+2

只是一个供参考,'empty'测试用于'false','null','0'和一个空字符串。所以你的|| ... === 0'只是多余的。如果您希望允许该值为'false'或'null',则删除'空'检查。但是这两者绝对不是必需的。 – 2011-06-08 15:42:03

+0

@Chris感谢您澄清问题。 – user773961 2011-06-08 15:42:26

回答

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 2011-06-08 15:50:29

+0

不客气! – Dalen 2011-06-08 15:53:54

-1

也许我完全不正当我,但为什么不:

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

如果你的问题是“我怎样才能知道什么指数是我虽然做了foreach”,那么答案是:

$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

你就不能像下面这样:

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; 
     } 
    } 
} 

,因为它去这将作为深遍历数组,并返回它找到了一个空位置,还是假的,如果它没有找到一个空位置的索引。