【问题标题】:get values from multidimensional array with objects从带有对象的多维数组中获取值
【发布时间】:2013-02-05 04:48:53
【问题描述】:

我使用了一个小脚本来导入 mt940 文件(荷兰银行交易文件)。

这是我返回的数组,但我需要一点帮助才能从数组中获取正确的值。

Array (
    [0] => Statement_banking Object (
        [_bank:Statement_banking:private] => ING
        [_account:Statement_banking:private] => 111111111
        [_transactions:Statement_banking:private] => Array (
            [0] => Transaction_banking Object (
                [account:Transaction_banking:private] => 111111111
                [accountName:Transaction_banking:private] => V. DE JONG KERKSTRAAT 1154 1234 BW
                [price:Transaction_banking:private] => 0.56
                [debitcredit:Transaction_banking:private] => C
                [description:Transaction_banking:private] => 0111111111 V. DE JONG KERKSTRAAT 1154 1234 BW ENSCHEDE BET.KENM. 1004510036716378 3305330802 AFLOSSINGSTERMIJN 188616 / 1E TERMIJN
                [valueTimestamp:Transaction_banking:private] => 1279749600
                [entryTimestamp:Transaction_banking:private] => 1279749600
                [transactionCode:Transaction_banking:private] => 078
            )
            [1] => Transaction_banking Object (
                [account:Transaction_banking:private] => 111111111 
                [accountName:Transaction_banking:private] => CUSTOMER NL SPOEDBETALING 
                [price:Transaction_banking:private] => 10.45 
                [debitcredit:Transaction_banking:private] => C 
                [description:Transaction_banking:private] => 0111111111 CUSTOMER NL SPOEDBETALING GE2009120212345 RE091202­3737 /RFB/NL­FMI­021209 NL­FMI­021209 VOORSCHOT COMMISSIE
                [valueTimestamp:Transaction_banking:private] => 1279749600 
                [entryTimestamp:Transaction_banking:private] => 1279749600 
                [transactionCode:Transaction_banking:private] => 077
            )
            [2] => Transaction_banking Object (
                [account:Transaction_banking:private] => 
                [accountName:Transaction_banking:private] => 
                [price:Transaction_banking:private] => 10000.99 
                [debitcredit:Transaction_banking:private] => D 
                [description:Transaction_banking:private] => VERZAMELBETALING BATCH­ID: 012345 TOTAAL 198 POSTEN 
                [valueTimestamp:Transaction_banking:private] => 1279749600 
                [entryTimestamp:Transaction_banking:private] => 1279749600 
                [transactionCode:Transaction_banking:private] => 029 ) )
                [_startPrice:Statement_banking:private] => 44 
                [_endPrice:Statement_banking:private] => 9945 
                [_timestamp:Statement_banking:private] => 1279749600 
                [_number:Statement_banking:private] => 100
            )
        )

这个键例如给我名字和地址:

[accountName:Transaction_banking:private] => V. DE JONG KERKSTRAAT 1154 1234 BW

这把钥匙给了我交易价格:

[price:Transaction_banking:private] => 0.56

有什么建议吗?

【问题讨论】:

  • 这些是 Transaction_bankingStatement_banking 类的私有属性。课程是什么样的?可能有一种检索数据的方法。

标签: php arrays object multidimensional-array mt940


【解决方案1】:

通常您将访问地址和交易价格:

foreach( $yourArray[0]->_transactions as $transaction ) {
    $foo = $transaction->accountName;
    $bar = $transaction->price;
}

但在这种特殊情况下,您的某些字段是私有的,这意味着您无法直接访问它们的值。您可以尝试定义自己的 Statement_bankingTransaction_banking 类并为这些字段定义访问器方法,例如:

public class Statement_banking {
    public function getTransactions() {
        return $this->_transactions;
    }
}

public class Transaction_banking {
    public function getAccountName() {
        return $this->accountName;
    }

    public function getPrice() {
        return $this->price;
    }
}

那么你的循环代码就变成了这样:

foreach( $yourArray[0]->getTransactions() as $transaction ) {
    $foo = $transaction->getAccountName();
    $bar = $transaction->getPrice();
}

如果你也想遍历外部数组,你可以将其扩展为:

foreach( $yourArray as $statement ) {
    foreach( $statement->getTransactions() as $transaction ) {
        $foo = $transaction->getAccountName();
        $bar = $transaction->getPrice();
    }
}

【讨论】:

    【解决方案2】:

    逻辑上您需要使用嵌套的 foreach 或 for 循环,不确定语法但下面的 PHP 代码可能会对您有所帮助,然后您可以转换为所需的语言

      $outputArr = Is your array.
      foreach ( $outputArr as $firstchild){
       forach ( $firstchild as $key => $secondchildvalue){
         // $key is basically your key value [price:Transaction_banking:private]
         // $secondchildvalue is your info value 0.56
       }
      }
    

    【讨论】:

    • 这行不通。它们是私有属性,price:Transaction_banking:private 不是关键。它们是私有的,所以你不能在课堂外直接访问它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多