【问题标题】:PHP count number of non-empty input data in an array in each for loopPHP计算每个for循环中数组中非空输入数据的数量
【发布时间】:2020-12-06 08:43:50
【问题描述】:

我有一个表格,可以将多行输入数据更新到我的 sql 中。每行在表单中有 3 个输入字段。我正在尝试计算每个 for 循环中每行中的空数据数,并通过计算百分比将数字更新为 SQL。例如,在一行中,在 3 个输入字段中,仅填充了 2 个输入字段,因此百分比应为 (2 / 3) * 100 = 67(向上取整)。我怎么做?下面是我的代码。请检查它是否对您有意义。

<?php
        $execute = false;
        $pr = 0;
        $userid_array = $_POST['userid_array'];     
        $access_array = $_POST['access_array'];
        $ic_array = $_POST['ic_array'];
        $email_array = $_POST['email_array'];
        
        foreach($userid_array as $key => $userid)
        {
            $array_count = 0;
            $access = $access_array[$key];
            $ic = $ic_array[$key];
            $email = $email_array[$key];
            
            $array_count = count(array_filter($access,$ic,$email)); //Count number of non-empty array elements
            
            $pr_percent = round(($array_count/3)*100, 0); //number of non-empty array elements divided by total number of input field multiply by 100
            
            $tsql = "UPDATE MASTER SET [Access] = ?, [IC] = ?, [Email] = ?, [pr_percent] = ? WHERE user_id = ?"; 
            $params_tsql = array($access,$ic,$email,$pr_percent,$userid);
            $stmt = sqlsrv_query( $conn, $tsql, $params_tsql);
                

            if($stmt)
            {
                  $execute = true;
            } 
            else
            {
                  $execute = false;
                  die( print_r( sqlsrv_errors(), true));
            }
        }

        if($execute){
            echo "success";
        }else{
            echo "failed";
        }

?>

【问题讨论】:

  • 您遇到了什么问题?有错误信息吗?
  • @Kevin 它只根据我的回显消息打印“失败”。
  • 您的代码根本不应该执行,array_filter($access,$ic,$email) 应该以 TypeError 退出,因为 $access 不是数组。应该是array_filter(array($access,$ic,$email))

标签: php sql arrays foreach


【解决方案1】:

@Nick 非常感谢。我怎么会这么粗心。

下面是我的回答

$array_count = count(array_filter(array($access,$ic,$email)));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 2011-02-17
    相关资源
    最近更新 更多