检查数组的所有项是否为空

时间:2014-02-09 13:36:05

标签: php

我是PHP编程的初学者。请有人建议我任何伎俩吗?如何使用任何循环功能缩短此脚本?

$org[1] = $_POST['name'];
$org[2] = $_POST['street'];
$org[3] = $_POST['city'];
$org[4] = $_POST['postal_code'];
$org[5] = $_POST['org_nmr'];
$org[6] = $_POST['tin'];

if (
    (empty($org[1])) 
    && (empty($org[2])) 
    && (empty($org[3])) 
    && (empty($org[4])) 
    && (empty($org[5])) 
    && (empty($org[6]))
) {
    echo 'Not enter have no data';
}

我认为有可能以某种方式实现它。但我不知道如何。

6 个答案:

答案 0 :(得分:2)

这个简单的答案是针对用户的示例问题量身定制的(它没有考虑其值为数组/对象等的数组)。

$data = trim(implode('',$org));
if (strlen($data) === 0){ 
 ... 
}

我从空($ data)更改为strlen($ data)=== 0 in if条件,如果值为零,则为非空状态;因为我们知道当$ data ='0'时,空($ data)将为真。

答案 1 :(得分:1)

您可以避免循环重复。保留指定的关联数组而不是$org的数字索引数组也可能更有意义。

$org = array();
foreach($_POST as $name => $value) {
  If (! empty($value)) {
    $org[$name] = $value;
  }
}
If (empty($org)) { //... Error here

答案 2 :(得分:1)

在访问POST阵列中的任何密钥之前,您应该进行检查。

根本不需要循环,foreach仅用于输出缺失的密钥,而不是用于检查

<?php
$required = array_flip(array('key_a', 'key_b')); // list of required keys, just used array_flip for ease of writing
$post = array('key_a' => 'a value'); // your $_POST array
$check = array_diff_key($required, $post);
if(!empty($check))  {
   // foreach not required as answer to your question, just to point missing keys out.
   foreach($check as $key => $value) {
       echo $key, 'key is missing!', PHP_EOL;
   }
   die('Some message');
}

答案 3 :(得分:1)

您可以使用array_filter内置功能

if(count(array_filter($_POST)) == 0)
   echo 'Nezadal(a) jste žádné údaje';

答案 4 :(得分:0)

$values = array('name', 'street', 'city', 'postal_code', 'org_nmr', 'tin');
$getLength = function($val, $post_data){
    return is_null($post_data[$val]) ? 0 : strlen($post_data[$val]);
};
if(array_sum(array_map($getLength, $values, $_POST)) == 0){
    echo 'Nezadal(a) jste žádné údaje';
}

基本上你创建一个函数来确定数组元素的长度并返回它的长度。

然后将此函数映射到所有元素,然后求它。

答案 5 :(得分:0)

惊讶没有人提到in_array?

if (in_array("", (array) $org)) {
   echo "something is empty in this array";
}

对上面的人采取行动,我可能会投出$ org:

$test = trim(implode('', (array) $org));
if (strlen($test) === 0){ 
   ... 
}

更多例子:

$arr0 = array('Hello', 'World!', 'Beautiful', 'Day!');
$arr1 = array("something" => 'here');
$arr2 = array("something" => '');
$arr3 = array();
$arr4 = "string";
$arr5 = 34;
$arr6 = '';

$test = trim(implode('', (array)$arr0));
if (strlen($test) === 0) {
    echo "No data in this array";
} else {
    echo "Data in this array \n";
}


$test = trim(implode('', (array)$arr1));
if (strlen($test) === 0) {
    echo "No data in this array\n";
} else {
    echo "Data in this array \n";
}

$test = trim(implode('', (array)$arr2));
if (strlen($test) === 0) {
    echo "No data in this array\n";
} else {
    echo "Data in this array \n";
}

$test = trim(implode('', (array)$arr3));
if (strlen($test) === 0) {
    echo "No data in this array\n";
} else {
    echo "Data in this array \n";
}

$test = trim(implode('', (array)$arr4));
if (strlen($test) === 0) {
    echo "No data in this array\n";
} else {
    echo "Data in this array \n";
}

$test = trim(implode('', (array)$arr5));
if (strlen($test) === 0) {
    echo "No data in this array\n";
} else {
    echo "Data in this array \n";
}


$test = trim(implode('', (array)$arr6));
if (strlen($test) === 0) {
    echo "No data in this array\n";
} else {
    echo "Data in this array \n";
}
相关问题