我是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';
}
我认为有可能以某种方式实现它。但我不知道如何。
答案 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";
}