【问题标题】:PHP foreach xml list all occurrencesPHP foreach xml列出所有出现
【发布时间】:2020-05-21 14:51:33
【问题描述】:

PHP 和编码新手,所以请放轻松 :)

我有以下 XML 数组


SimpleXMLElement Object
(
    [Envelope] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [ID] => 387e1295-5b5d-4943-8236-ddb62bfefc54
                    [Receiver] => 447777777777
                    [Message] => Coltest out going 1
                    [SentTime] => 2020-02-05 12:57:06
                )

            [1] => SimpleXMLElement Object
                (
                    [ID] => 0dab3015-5e30-477e-ba22-6660fd580010
                    [Receiver] => 447777777777
                    [Message] => coltest outgoing 2
                    [SentTime] => 2020-02-05 12:57:20
                )

            [2] => SimpleXMLElement Object
                (
                    [ID] => ac7e6ce9-c629-4ce3-b3e2-fb00695747b0
                    [Receiver] => 447766666666
                    [Message] => just a test please ignore
                    [SentTime] => 2020-02-05 13:17:25
                )

        )

)

我想将 Receiver= 447777777777 的每个信封分配给它自己的变量

我有以下内容可以拉出第一个信封,但我想要所有匹配 Receiver= 447777777777 的信封

foreach($xml->Envelope as $item) {
if(trim($item->Receiver) == $sender) {
        $msg = array(
            'ID' => trim($item->ID), 
            'Receiver' => trim($item->Receiver), 
            'Message' => trim($item->Message), 
            'SentTime' => trim($item->SentTime), 
        );
    }
}

【问题讨论】:

  • $msg 应该是一个数组,以便您可以存储所有匹配的条件。将 $msg 更改为 $msg[] 应该可以解决问题。
  • 哇,真快! - 感谢卡杜德卡斯特罗阿尔维斯
  • 一个简单的问题,我现在如何将 $msg 的数组分配给它自己的变量? - 这会是另一个 foreach 吗?
  • 不客气!
  • 好吧,一旦你可能不知道需要多少个变量,我想你可以直接使用 $msg 中存储的值。还是我错过了什么?

标签: php xml foreach


【解决方案1】:
You can define an empty array and push all data to that array if matched.Here is 
the code below.
`$arr = [];
foreach($xml->Envelope as $item) {
if(trim($item->Receiver) == $sender) {
      $msg = array(
          'ID' => trim($item->ID), 
          'Receiver' => trim($item->Receiver), 
          'Message' => trim($item->Message), 
          'SentTime' => trim($item->SentTime), 
      );
      array_push($arr, $msg);
  }
}`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    相关资源
    最近更新 更多