我正在尝试错误检查提交时创建数组的表单,但该错误中的值不能为空,如何使用PHP检查,数组看起来像这样,
Array
(
[campaign_title] =>
[campaign_keyword] =>
[introduction] =>
[position] => left
[campaign_headline] => Array
(
[0] =>
)
[article] => Array
(
[0] =>
)
[save_multiple] => Save
)
我知道我需要做类似下面的事情但从那时起我完全迷失了,
foreach($post as $k=>$v) {
//do some loop to check each key as a value?
}
答案 0 :(得分:2)
foreach($post as $k=>$v) {
if(is_array($v)) {
foreach($v as $k1=>$v1) {
if(empty($v1))
throw new Exception($k1.' inside '.$k.' is empty');
}
}
if(empty($v))
throw new Exception($k.' is empty');
}
答案 1 :(得分:1)
这是另一种解决方案。也适用于多维数组,并在找到Exception值时抛出empty
:
array_walk_recursive($array, function($val, $key) {
if (empty($val)) {
throw new Exception(htmlspecialchars($key).' is empty');
}
});
由于Lambda callback而需要PHP5.3。
答案 2 :(得分:0)
你想要,没有价值可以为空吗?
然后在这里:
<?php
function checkArrayIsEmpty( $array )
{
foreach( $array as $k => $v )
{
if( is_array( $v ) )
{
checkArrayIsEmpty( $v );
}
elseif( !is_array( $v ) && empty( trim( $v ) ) )
{
return TRUE;
}
}
return FALSE;
}
?>
使用它:
<?php
if( checkArrayIsEmpty( $post ) )
{
echo 'Error!';
}
else
{
echo '...'; // Its not empty
}
?>
答案 3 :(得分:0)
以下函数将检查数组中的所有值,无论深度如何。当它找到empty值时,它将返回TRUE。否则它将返回FALSE。
function hasEmptyValues(array $array)
{
foreach(new RecursiveIteratorIterator(
new RecursiveArrayIterator($array)) as $v) {
if(empty($v)) return TRUE;
}
return FALSE;
}
答案 4 :(得分:0)
function check_array($array)
{
foreach($array as $key => $value)
{
if(is_array($value))
{
check_array($value);
}
if(!isset($value))
{
return FALSE;
}
}
return TRUE;
}
用法:check_array($_POST);
答案 5 :(得分:0)
好的,有点非正统的解决方案
首先序列化数组
$serialized_array = serialize($your_array);
结果会像这样
a:6:{s:14:"campaign_title";s:0:"";s:16:"campaign_keyword";s:0:"";s:12:"introduction";s:0:"";s:8:"position";a:1:{i:0;s:0:"";}s:7:"article";a:1:{i:0;s:0:"";}s:13:"save_multiple";s:4:"Save";}
您可以通过计算“”来计算空值。
$number_of_empty_values = substr_count($serialized_array, '""');