1
Array
(    [Fixed Assets] => Array
    (
        [0] => 150
        [1] => Array
            (
                [Equimpent] => Array
                    (
                        [0] => Office Computer
                        [1] => Office Printer
                    )
            )
        [2] => Array
            (
                [Furniture and Fixtures] => Array
                    (
                        [0] => Desk
                        [1] => Desk Chair
                    )
            )
    )
)

作为分层帐户命名和编号模式,Account Numbers 可以从上面的示例数组中派生出来,如下所示...

  • 固定资产父帐户)# 150
  • 设备固定资产的子项)# 150-1
  • 家具和固定装置固定资产的子项)# 150-2
  • 桌椅家具和固定装置的孩子)# 150-2-1

我的难题是如何仅在给定所需的新帐户名称及其目标父帐户的派生帐号的情况下将新帐户添加到数组中。

例如...

<?php  
//Chart of Accounts
$coa = array('Fixed Asset'=>array(150,array('Equimpent'=>array('computer','printer')),array('Furniture and Fixtures'=>array('desk','chair'))));
//global $coa;
$new_account ="Office File Cabinet";//from ajax post
$target_base_no ="150-2";//from ajax post
//won't know if or how many subkeys will may be included 
//but would result in something like...

$coa['unknown_parent_of_acct_no_150'][2][] = $new_account;
?>

我完全被封锁了...相反,我想我可能会问...我如何确定帐户# 150-2 的帐户名称?这是上下文中的 COA 数组。

Array
(
[Cash Bank] => Array
    (
        [0] => 100
        [1] => Checking
        [2] => Paypal
        [3] => Petty Cash
        [4] => Savings
        [5] => Deposits Pending
    )

[Accounts Receivable] => Array
    (
        [0] => 110
        [1] => AR-AlternaMart
    )

[Inventory] => Array
    (
        [0] => 120
    )

[Other Current Assets] => Array
    (
        [0] => 130
        [1] => Pre-Paid Hosting
    )

[Fixed Assets] => Array
    (
        [0] => 150
        [1] => Array
            (
                [Equipment] => Array
                    (
                        [0] => Computer
                        [1] => Printer
                    )

            )

        [2] => Array
            (
                [Furniture And Fixtures] => Array
                    (
                        [0] => Desk
                        [1] => Desk Chair
                    )

            )

    )

[Accumulated Depreciation] => Array
    (
        [0] => 160
        [1] => AD-Computer
        [2] => AD-Printer
        [3] => AD-Desk
        [4] => AD-Desk Chair
    )

[Accounts Payable] => Array
    (
        [0] => 200
        [1] => AP-Unearned Shipping
    )

[Credit Cards Payable] => Array
    (
        [0] => 210
        [1] => Wells Fargo Visa
    )

[Sales Tax Payable] => Array
    (
        [0] => 220
        [1] => CO
        [2] => 80227
        [3] => 80214
        [4] => IL
    )

[Accrued Payroll Taxes] => Array
    (
        [0] => 230
    )

[Other Current Liabilities] => Array
    (
        [0] => 240
    )

[Loans Payable] => Array
    (
        [0] => 270
    )

[Notes Payable] => Array
    (
        [0] => 280
    )

[Capital] => Array
    (
        [0] => 300
    )

[Drawing] => Array
    (
        [0] => 320
    )

[Sales] => Array
    (
        [0] => 400
    )

[Other Income] => Array
    (
        [0] => 401
        [1] => Shipping
    )

[Commissions] => Array
    (
        [0] => 402
        [1] => AlternaMart Commissions
    )

[Sales Discounts] => Array
    (
        [0] => 450
    )

[Sales Returns and Allowances] => Array
    (
        [0] => 451
    )

[Shipping Discounts] => Array
    (
        [0] => 452
    )

[Reimbursed Shipping] => Array
    (
        [0] => 453
    )

[Cost of Goods Sold] => Array
    (
        [0] => 500
        [1] => COGS Shipping
    )

[Expense] => Array
    (
        [0] => 600
        [1] => BSC Checking
        [2] => Paypal Transaction Fees
        [3] => Alternamart Transaction Fees
        [4] => Commissions Expense
        [5] => Interest Expense
        [6] => Internet Service
        [7] => Web Hosting
        [8] => Rent Expense
        [9] => Telephone
        [10] => Utilities
        [11] => Postage
        [12] => Office Supplies
        [13] => Miscellaneous Supplies
        [14] => Advertising
        [15] => Salaries And Wages
        [16] => Payroll Taxes
        [17] => Dues And Subscriptions
        [18] => Miscellaneous Expenses
        [19] => Legal And Accounting
        [20] => Insurance
        [21] => Vehicles Expense
        [22] => Depreciation Expense
        [23] => Travel And Entertainment
        [24] => Bad Debt Expense
        [25] => Ask Accountant
    )

[Ask Accountant] => Array
    (
        [0] => 900
    )

)

4

1 回答 1

0

如果我猜对了:...

拆分$target_base_no方式 -$arr = explode('-', $target_base_no) 在你的$coa数组中搜索 value = 150 ($arr[0]),像这样:

    foreach($coa as $row) {
       if ($arr[0] == $row[.....]
    }

使用第二个拆分值 ($arr[1]) 来确定插入的位置。

编辑:您应该创建一个反向索引数组以直接访问正确的值。我们将数字值保存为键,将文本值保存为值(可用作$coa数组的索引:

$index = array();
foreach($coa as $key => $value) {
     $index[$value[0]] = $key;
}

之后您只需访问您的数据$coa[$index[$arr[0]]](您应该检查该字段是否存在)

于 2012-05-05T21:37:09.527 回答