2013-02-25 67 views
0

在BPM應用程序中,我試圖循環訪問關聯數組的關聯數組,並使用foreach循環僅返回值(APP_UID)。但是,我只能顯示最後生成的值,而不是所有的值。Foreach多維數組顯示值

這裏是我的代碼:

$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') 

有關我在做什麼錯的任何想法?

+0

其他人給你正確的答案。不過,我只想說,在構建IN語句的這些情況下,我傾向於使用要使用的值創建一個數組,然後使用implode(',',$ array)創建逗號分隔的字符串。 – eli 2013-02-25 04:48:51

回答

1

我覺得你在這裏缺少串聯:

初始化變量像下面的圈頂部:

如低於0
$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)"); 
} 
0

變化

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

到:

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

注意級聯.=

3

嘗試。

$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 = '';爲「初始化字符串」。