2010-08-06 6 views
0

J'essaie de modifier un wrapper PHP open source pour exporter un fichier XML.XML vers PHP Array?

Original:

$new_invoice = array(
    array(
     "Type"=>"ACCREC", 
     "Contact" => array(
      "ContactID" => "[contact id]" 
     ), 
     "Date" => "2010-04-08", 
     "DueDate" => "2010-04-30", 
     "Status" => "SUBMITTED", 
     "LineAmountTypes" => "Exclusive", 
     "LineItems"=> array(
      "LineItem" => array(
       array(
        "Description" => "Just another test invoice", 
        "Quantity" => "2.0000", 
        "UnitAmount" => "250.00", 
        "AccountCode" => "200" 
       ) 
      ) 
     ) 
    ) 
); 

J'ai ajouté une autre LineItem, il se présente comme suit:

$new_invoice = array(
    array(
     "Type"=>"ACCREC", 
     "Contact" => array(
      "ContactID" => "7937FF1D-B135-4BD0-A219-4B621EA3808C" 
     ), 
     "Date" => "2010-04-08", 
     "DueDate" => "2010-04-30", 
     "Status" => "DRAFT", 
     "LineAmountTypes" => "Exclusive", 
     "LineItems"=> array(
      "LineItem" => array(
       array(
        "Description" => "Just another test invoice", 
        "Quantity" => "2.0000", 
        "UnitAmount" => "250.00", 
        "AccountCode" => "200" 
       ) 
      ) 
      "LineItem" => array(
       array(
        "Description" => "Just another test invoice2", 
        "Quantity" => "2.0000", 
        "UnitAmount" => "250.00", 
        "AccountCode" => "200" 
       ) 
      ) 
     ) 
    ) 
); 

mais j'ai une erreur qui dit « attendre un support de fermeture) Il semble que Toutes les parenthèses sont là, donc je suis confus

Répondre

1

Vous avez manqué une virgule après le premier tableau LineItem

En outre, puisque vos deux tableaux partagent la même clé ("LineItem"), le second écrasera le premier, mais cela n'a aucun rapport avec l'erreur de syntaxe.

Edit: Pour faire face à ce problème (ici en supposant que quelque chose comme SimpleXML est utilisé):

"LineItems"=> array(
    "LineItem" => array(
     array(
      "Description" => "Just another test invoice", 
      "Quantity" => "2.0000", 
      "UnitAmount" => "250.00", 
      "AccountCode" => "200" 
     ), 
     array(
      "Description" => "Just another test invoice2", 
      "Quantity" => "2.0000", 
      "UnitAmount" => "250.00", 
      "AccountCode" => "200" 
     ) 
    ) 
) 
0

Vous avez oublié un Virgule ... après le premier élément de ligne ...

votre le code doit ressembler à:

<?php 
$new_invoice = array(
    array(
     "Type"=>"ACCREC", 
     "Contact" => array(
      "ContactID" => "7937FF1D-B135-4BD0-A219-4B621EA3808C" 
     ), 
     "Date" => "2010-04-08", 
     "DueDate" => "2010-04-30", 
     "Status" => "DRAFT", 
     "LineAmountTypes" => "Exclusive", 
     "LineItems"=> array(
      "0" => array(
       array(
        "Description" => "Just another test invoice", 
        "Quantity" => "2.0000", 
        "UnitAmount" => "250.00", 
        "AccountCode" => "200" 
       ) 
      ), 
      "1" => array(
       array(
        "Description" => "Just another test invoice2", 
        "Quantity" => "2.0000", 
        "UnitAmount" => "250.00", 
        "AccountCode" => "200" 
       ) 
      ) 
     ) 
    ) 
); 
?> 

Votre deuxième élément de ligne outrepasse le premier.

Je recommanderai un compteur et être incrémenter après chaque LineItem ajouté ...

0

Il est la virgule manquante, mais comme d'autres ont dit, le second remplace le premier. Essayez ceci:

$new_invoice = array(
    array(
     "Type"=>"ACCREC", 
     "Contact" => array(
      "ContactID" => "7937FF1D-B135-4BD0-A219-4B621EA3808C" 
     ), 
     "Date" => "2010-04-08", 
     "DueDate" => "2010-04-30", 
     "Status" => "DRAFT", 
     "LineAmountTypes" => "Exclusive", 
     "LineItems"=> array(
      "LineItem" => array(
       array(
        "Description" => "Just another test invoice", 
        "Quantity" => "2.0000", 
        "UnitAmount" => "250.00", 
        "AccountCode" => "200" 
       ), 
       array(
        "Description" => "Just another test invoice2", 
        "Quantity" => "2.0000", 
        "UnitAmount" => "250.00", 
        "AccountCode" => "200" 
       ) 
      ) 
     ) 
    ) 
); 
print_r($new_invoice); 
0

Seulement Virgule (,) manque dans votre tableau après la première "LineItem"