PHP foreach xml список всех вхождений - PullRequest
1 голос
/ 05 февраля 2020

Новый для PHP и кодирование, так что go легко для меня:)

У меня есть следующий 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
                )

        )

)

Я хотел бы назначить каждый конверт, где приемник = 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), 
        );
    }
}

1 Ответ

0 голосов
/ 05 февраля 2020
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);
  }
}`
...