我有已转换为数组的xml。响应数组似乎不是为一个结果创建array [0],而是为许多结果创建array [0],[1],[2]。因此,我想为每个结果响应创建array [0]以便标准化我的迭代。初始响应数组如下:
数组-一个细节
( [BookedDetail] => Array ( [BookedDetailID] => 192 [Customer] => Array ( [CustomerID] => 110 [LanguageID] => 2 [Address] => Array ( [StreetName] => Northway 23 [PostalCode] => 29843 [Region] => NSW ) ) [Currency] => Array ( [CurrencyID] => 19 [CurrencyName] => Yen [CurrencyShortName] => JPY ) [Status] => 1 [CreateBy] => 15 ) )
数组-许多详细信息
( [BookedDetail] => Array ( [0] => Array ( [BookedDetailID] => 192 [Customer] => Array ( [CustomerID] => 110 [LanguageID] => 2 [CustomerType] => 1 [Address] => Array ( [StreetName] => Northway 23 [PostalCode] => 29843 [Region] => NSW ) ) [Currency] => Array ( [CurrencyID] => 19 [CurrencyName] => Yen [CurrencyShortName] => JPY ) [Status] => 3 [CreateBy] => 16 ) [1] => Array ( [BookedDetailID] => 193 [Customer] => Array ( [CustomerID] => 113 [LanguageID] => 2 [CustomerType] => 1 [Address] => Array ( [StreetName] => Southway 23 [PostalCode] => 2852 [Region] => SSW ) ) [Currency] => Array ( [CurrencyID] => 23 [CurrencyName] => US Dollar [CurrencyShortName] => USD ) [Status] => 2 [CreateBy] => 17 ) ) )
我的预期结果:
( [BookedDetail] => Array ( [0] => Array ( [BookedDetailID] => 192 [Customer] => Array ( [0] => Array ( [CustomerID] => 110 [LanguageID] => 2 [CustomerType] => 1 [Address] => Array ( [0] => Array ( [StreetName] => Northway 23 [PostalCode] => 29843 [Region] => NSW ) ) ) ) [Currency] => Array ( [0] = Array ( [CurrencyID] => 19 [CurrencyName] => Yen [CurrencyShortName] => JPY ) ) [Status] => 3 [CreateBy] => 16 ) [1] => Array ( [BookedDetailID] => 193 [Customer] => Array ( [0] => Array ( [CustomerID] => 113 [LanguageID] => 2 [CustomerType] => 1 [Address] => Array ( [0] => Array ( [StreetName] => Southway 23 [PostalCode] => 2852 [Region] => SSW ) ) ) ) [Currency] => Array ( [0] => Array ( [CurrencyID] => 23 [CurrencyName] => US Dollar [CurrencyShortName] => USD ) ) [Status] => 2 [CreateBy] => 17 ) ) )
每个节点可以有一个或多个子节点,因此我想为每个节点设置[0],为多个子节点设置[0] [1] [2]等。我尝试了一些代码,并在维护当前数组结果时遇到问题,以便添加递归函数。我是否需要外部变量来存储当前数组,还是在调用递归函数时追加它。我当前的代码:
$x1 = json_decode(json_encode($xmlobj), true); $result = array(); function callarr ($arrin) { foreach ($arrin as $arrkey => $arrvalue) { foreach ($arrvalue as $subkey => $subvalue) { if (is_array($subvalue)) { $arr1[$arrkey][$subkey] = $subvalue; // recursive function here } else { $arr2[$arrkey][0][$subkey] = $subvalue; } } $result = array_merge($arr1, $arr2); } return $result; } $x2 = callarr ($x1); print_r ($x2);
$ x2的结果只会在[BookedDetail]下创建[0]节点,因为我还没有调用递归函数。我需要帮助以获得预期的数组结果。非常感谢您的帮助。
我有已转换为数组的xml。响应数组似乎不是为一个结果创建array [0],而是为许多结果创建array [0],[1],[2]。所以我想为每个一个创建array [0] ...
您可以尝试类似的方法,但是我怀疑array_merge在这种情况下是否可以工作。您需要创建数组以向其中添加多个值。如这一行所示,您需要一个数组$ arr1 [$ arrkey] [$ subkey] []来保存多个值
很难知道这是否正是您所追求的,但是您可能比我更容易检查它。