【问题标题】:Coldfusion How can i detect duplicate variable in arrayColdfusion如何检测数组中的重复变量
【发布时间】:2021-04-12 07:47:09
【问题描述】:

我使用cfloop 从数据库中提取了一个循环。将此循环转移到数组后,如果存在相同的数组,我想增加股票的数量。

<cfoutput query="getStocks">
    <cfif #CurrentRow# lt 5> 
        <cfscript>
            c=#CurrentRow#;
            if (c==1){
                arr[c]['stok_kod']='#STOCK_CODE#';
                arr[c]['lot']='#LOT_NO#';
                arr[c]['stok']=#STOK_MIKTARI#;
                arr[c]['depo']='#DEPO#';
                arr[c]['isim']='#PRODUCT_NAME#';
                arr[c]['skt']='#GET_SKT.DELIVER_DATE#';
            }
            for (i=1; i <= arrayLen(#arr#);i++) {
                if (arr[i]['stok_kod'] eq '#STOCK_CODE#' ){
                    arr[i]['stok']+=#STOK_MIKTARI#;
                }else{
                    arr[c]['stok_kod']='#STOCK_CODE#';
                    arr[c]['lot']='#LOT_NO#';
                    arr[c]['stok']=#STOK_MIKTARI#;
                    arr[c]['depo']='#DEPO#';
                    arr[c]['isim']='#PRODUCT_NAME#';
                    arr[c]['skt']='#GET_SKT.DELIVER_DATE#';
                }
            }
        </cfscript>
    </cfif>
</cfoutput>

如何检测具有相同股票代码的那些?

【问题讨论】:

  • 您可以忘记数组并使用Query of Queries 来确定哪些股票代码出现了多次。
  • 您可以将 ArrayFind/FindNoCase 与闭包函数一起使用,但似乎有点重量级。在 SQL 中进行聚合怎么样?你的 dbms 和 sql 查询是什么?

标签: coldfusion coldfusion-9 coldfusion-10 cfml coldfusion-2016


【解决方案1】:

您可以尝试使用带有GROUP BY函数的query of queries方法

这是它的工作原理示例。

<cfscript>
    getStocks = queryNew("stok_kod,stok", "varchar,integer");
    queryAddRow(getStocks);
    querySetCell(getStocks, "stok_kod", "1234");
    querySetCell(getStocks, "stok", "-10");
    queryAddRow(getStocks);
    querySetCell(getStocks, "stok_kod", "5678");
    querySetCell(getStocks, "stok", "10");
    queryAddRow(getStocks);
    querySetCell(getStocks, "stok_kod", "1234");
    querySetCell(getStocks, "stok", "30");
</cfscript>

<cfquery name="newQuery" dbtype="query">
  SELECT stok_kod, SUM(stok) as stok
  FROM getStocks
  GROUP BY stok_kod
</cfquery>

<cfdump var="#newQuery#">

输出

【讨论】:

    【解决方案2】:

    我建议您使用一个变量来列出您的独特股票代码。

    示例:&lt;cfset lst_stok_kod = "a,b,c,d"&gt; 可能来自您的 SQL 查询。

    之后,您可以使用ArrayFindNoCase 函数检查您的数组是否存在该股票代码。如果您发现不止一次,则每次都增加库存数量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 2020-01-16
      • 2010-11-06
      相关资源
      最近更新 更多