【问题标题】:Foreach multidimensional array display valuesforeach 多维数组显示值
【发布时间】:2013-02-25 04:38:59
【问题描述】:

在 BPM 应用程序中,我尝试循环访问关联数组的关联数组,并使用 foreach 循环仅返回值 (APP_UID)。但是,我只能显示最后生成的值,而不是所有值。

这是我的代码:

$currentUser = @@USER_LOGGED;
//Copy Notes to Subprocess
$caseId = @@APPLICATION; //Case UID
$subcases = executeQuery("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='$caseId'");
if (is_array($subcases) and count($subcases) > 0) { 
  foreach($subcases as $subcase)
  $subCaseId = $subcase["APP_UID"] . ", ";

//Update the Sent By status
executeQuery("UPDATE APP_CACHE_VIEW SET PREVIOUS_USR_UID = '$currentUser' WHERE APP_UID IN ('$subCaseId')");
}

executeQuery 函数应该生成如下所示的 SQL 语句,但事实并非如此。示例:

UPDATE APP_CACHE_VIEW SET PREVIOUS_USR_UID = '54454572356235' WHERE APP_UID IN      
('336545547', '436545534', '736545125')

关于我做错了什么有什么想法吗?

【问题讨论】:

  • 别人已经给你正确答案了。但是我只想说,在这些构建 IN 语句的情况下,我更喜欢使用要使用的值创建一个数组,然后使用 implode(',', $array) 创建逗号分隔的字符串

标签: php mysql


【解决方案1】:

试试这个。

    $currentUser = @@USER_LOGGED;
    //Copy Notes to Subprocess
    $caseId = @@APPLICATION; //Case UID
    $subcases = executeQuery("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='$caseId'");
    if (is_array($subcases) and count($subcases) > 0) { 
      $subCaseId = '';
      foreach($subcases as $subcase)
      $subCaseId .= $subcase["APP_UID"] . ", ";

    //Update the Sent By status
    executeQuery("UPDATE APP_CACHE_VIEW SET PREVIOUS_USR_UID = '$currentUser' WHERE APP_UID IN ('$subCaseId')");
    }

另外,不要忘记通过在代码中执行 $subCaseId = ''; 来“重新初始化字符串”。

【讨论】:

    【解决方案2】:

    我认为您在这里缺少串联:

    在循环顶部初始化如下变量:

    $subCaseId = '';
    

    并使用连接运算符.=,如下所示:

    $subCaseId .= $subcase["APP_UID"] . ", ";
    

    理想情况下,您还应该从变量 $subCaseId 中删除最后一个命令和空格

    您还需要删除此变量周围的单引号以进行 IN 查询。

    完整解决方案如下:

    $currentUser = @@USER_LOGGED;
    //Copy Notes to Subprocess
    $caseId = @@APPLICATION; //Case UID
    $subcases = executeQuery("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT='$caseId'");
    if (is_array($subcases) and count($subcases) > 0) { 
        $subCaseId = '';
          foreach($subcases as $subcase)
              $subCaseId = $subcase["APP_UID"] . ", ";
        //To remove last comma and space
        $subCaseId = substr($subCaseId,0,-2);
    
    //Update the Sent By status
    executeQuery("UPDATE APP_CACHE_VIEW SET PREVIOUS_USR_UID = '$currentUser' WHERE APP_UID IN ($subCaseId)");
    }
    

    【讨论】:

      【解决方案3】:

      改变

       foreach($subcases as $subcase)
        $subCaseId = $subcase["APP_UID"] . ", ";
      

      到:

        $subCaseId = '';
        foreach($subcases as $subcase)
        $subCaseId .= $subcase["APP_UID"] . ", ";
      

      注意串联.=

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-14
        • 2013-11-02
        相关资源
        最近更新 更多