递归检查值是否为空

时间:2015-10-01 09:46:57

标签: php arrays

我必须检查索引为0的子数组中带有键2,3,4,5的项是否为空。如果为空,我需要抛出异常。

如果不为空,则移至下一次迭代,使用索引1在子数组中使用键3,4,5,6检查项目,依此类推。

带有键0和1的项目将始终为空,因此无需使用它们。

因此,请检查包含键>的项目1然后4-4对检查是否有人是空的然后抛出异常。 这是我的代码

$array =  array(
  array('0' => '','1' => '','2' => 'Wasatch standard','3' => 'Wasatch standard','4' => '3,5,2','5' => 'English','6' => '','7' => '','8' => ''),
  array('0' => '','1' => '','2' => '','3' => 'ThisIsAtest','4' => 'Wasatch standard1','5' => '3,4,5','6' => 'English','7' => '','8' => ''),
  array('0' => '','1' => '','2' => '','3' => '','4' => 'Wasatch standard1.1','5' => 'Wasatch standard1.1','6' => '2','7' => 'Mathematics','8' =>''),
  );


for($i=0;$i<count($array);$i++){
  checkRecursivelyIfEmpty($array[$i],array('2'+$i,'3'+$i,'4'+$i,'5'+$i));
}


function checkRecursivelyIfEmpty($value,$sumValue){
  foreach ($sumValue as $k => $v) {
    if(empty($value[$v])){
      throw new Exception("Error Processing Request");
    }
  }
}

3 个答案:

答案 0 :(得分:1)

以下函数首先检查输入是否确实是一个数组,然后检查索引是否为空。如果没有,那么它会引发异常。此外,它遍历数组以查看是否存在内部数组。如果是这样,那么它也会递归检查它们。在功能之后,可以快速演示使用情况。

function checkThings($inputArray, $subArray) {
    //If it is not an array, it does not have the given indexes
    if (!is_array($inputArray)) {
        return;
    }
    //throws exception if one of the elements in question is not empty
    foreach ($subArray as $key) {
        if ((isset($inputArray[$key])) && (!empty($inputArray[$key]))) {
            throw new Exception("My Exception text");
        }
    }
    //checks for inner occurrences
    foreach ($inputArray as $key => $value) {
        if (is_array($inputArray[$key])) {
            checkThings($inputArray[$key], $subArray);
        }
    }
}

//Calls checkThings for all elements
for ($index = 0; $index < count($myArray); $index++) {
    checkThings($myArray[$index], array($index + 2, $index + 3, $index + 4, $index + 5));
}

答案 1 :(得分:0)

使用foreach并使用empty($value)

进行检查
 foreach ($array as $key => $value) {
            $value = trim($value);
            if (empty($value))
                echo "$key empty <br/>";
            else
                echo "$key not empty <br/>";
        }

答案 2 :(得分:0)

假设数组名为$a,您可以使用此代码。外循环遍历所有数组。内部循环从$i+2迭代到$i+5(在$i=0的情况下,在子数组上得到2,3,4和5)。函数empty()检查项是否已设置且不等于false(例如,空字符串)。

for($i=0; $i<count($a); $++)
    for($j=$i+2; $j<$i+6; $j++)
        if(empty($a[$i][$j]))
            //Raise an error!