Comment obtenir une valeur XML d'attribut spécifique dans une variable
Question
j'ai un XML
<?xml version="1.0" encoding="UTF-8"?>
<nm_response>
<transaction>
<transaction_id>111111111</transaction_id>
<order_description></order_description>
<first_name>Judith</first_name>
<last_name>Grosz</last_name>
<address_1>addresse</address_1>
<address_2></address_2>
<company></company>
<city>Brooklyn</city>
<state>NY</state>
<postal_code></postal_code>
<country>US</country>
<email>test@test.com</email>
<phone>99999999999</phone>
<merchant_defined_field id="1">104647</merchant_defined_field>
<merchant_defined_field id="2">POS - 1347 - admin</merchant_defined_field>
<merchant_defined_field id="3">Judith Grosz</merchant_defined_field>
<merchant_defined_field id="4">8003452000</merchant_defined_field>
<merchant_defined_field id="5">40784.602953</merchant_defined_field>
<merchant_defined_field id="6">40784.602953</merchant_defined_field>
<original_transaction_id>1851413758</original_transaction_id>
<cc_bin>456331</cc_bin>
<action>
<amount>39.95</amount>
<action_type>sale</action_type>
<date>20140529081646</date>
<success>1</success>
<ip_address></ip_address>
</action>
</transaction>
<transaction>
<transaction_id>111111111</transaction_id>
<order_description></order_description>
<first_name>Judith</first_name>
<last_name>Grosz</last_name>
<address_1>addresse</address_1>
<address_2></address_2>
<company></company>
<city>Brooklyn</city>
<state>NY</state>
<postal_code></postal_code>
<country>US</country>
<email>test@test.com</email>
<phone>99999999999</phone>
<merchant_defined_field id="1">104647</merchant_defined_field>
<merchant_defined_field id="2">POS - 1347 - admin</merchant_defined_field>
<merchant_defined_field id="13">Judith Grosz</merchant_defined_field>
<merchant_defined_field id="14">8003452000</merchant_defined_field>
<merchant_defined_field id="25">40784.602953</merchant_defined_field>
<merchant_defined_field id="36">40784.602953</merchant_defined_field>
<original_transaction_id>1851413758</original_transaction_id>
<cc_bin>456331</cc_bin>
<action>
<amount>39.95</amount>
<action_type>sale</action_type>
<date>20140529081646</date>
<success>1</success>
<ip_address></ip_address>
</action>
</transaction>
</nm_response>
Pour récupérer des valeurs telles que prénom, nom de famille, etc.Je convertis ceci en tableau en utilisant le code ci-dessous
$xml = simplexml_load_string($xml);
$Class = json_encode($xml);
$Array = json_decode($Class,TRUE);
$fetch_trans = $Array['transaction'];
Ça marche bien.Mais mon problème est de savoir comment obtenir tous les marchands_définis_field dans des varibales différentes-différentes
$var1=value of merchant_defined_field id="2";
$var2=value of merchant_defined_field id="3"
$var3=value of merchant_defined_field id="13"
$var4=value of merchant_defined_field id="36"
Pas de solution correcte
Autres conseils
Essayez ceci:
$xml = simplexml_load_string($xml);
var_dump($xml->transaction->merchant_defined_field->attributes()->id);
essayer ${}
pour créer une variable dynamique et utiliser une boucle pour stocker les valeurs dans
$i=1;
foreach($Array['transaction']['merchant_defined_field'] as $m) {
${"merchant_defined_field" . $i} = $m;
$i++;
}
echo $merchant_defined_field1;
echo $merchant_defined_field2;
echo $merchant_defined_field3;
echo $merchant_defined_field4;
Pour obtenir l'attribut d'identification, essayez
$xml=simplexml_load_string($xml);
$i=1;
foreach($xml->transaction->merchant_defined_field as $m) {
${"merchant_defined_field_id" . $i} = $m->attributes()->id;
$i++;
}
echo $merchant_defined_field_id1;
echo $merchant_defined_field_id2;
echo $merchant_defined_field_id3;
echo $merchant_defined_field_id4;
$var1=$Array["transaction"]["merchant_defined_field"][0];
echo $var1 ."<br>";
$var2=$Array["transaction"]["merchant_defined_field"][1];
echo $var2."<br>";;
Remarque Il y a un décalage avec la matrice ["transaction"] ["marchand_definefined_field"] à partir de l'index 0
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow