2017-03-02 32 views
0

我想從多維數組中提取數據,然後將其放入我自己的一箇中,以便可以將它加載到我的數據庫中。從多個數組中提取並將其放入我自己-php

來源:

array("ListOrdersResult" => 
    array ("Orders" => 
     array("Order" => 
      array([0] => { 
        "Title" => $productTitle, 
        "customer_name" => $customerName, 
        "customer_id" => $customerId, 
        "random_info" => $randomInfo 
        }, 
        [1] => { 
        "Title" => $productTitle, 
        "customer_name" => $customerName, 
        "customer_id" => $customerId, 
        "random_info" => $randomInfo 
        } 
       ) 
      ) 
     ) 

要做到這一點,我通過它騎自行車這樣的 - 我與提取數據沒有問題。 我的代碼:

$count = count($listOrderArray['ListOrdersResult']['Orders']['Order']); 

//Cycle through each Order to extract the data I want 
for($i = 0; $count > $i; $i++) { 
    $baseArray = $listOrderArray['ListOrdersResult']['Orders']['Order'][$i]; 

    foreach($baseArray as $key => $value) { 
     if($key == "Title" || $key == "customer_id") { 
      //ADD TO multidimensional array 
     } 
    } 
} 

我如何構造它。

array([0] => { 
    array( 
    "Title" => $title, 
    "customer_id" => $customer_id 
    }, 
    [1] => { 
    "Title" => $nextTitle, 
    "customer_id" => $next_customer_id 
    } 
    ); 

的最終目標是通過收集被記錄的數據,然後通過創建一個新的記錄其加載到數據庫中,而不是裝載,然後回來和修改,使其更容易地將信息加載到數據庫中記錄。對我來說,似乎需要更多的資源,而且數據不一致的可能性更大,但我是新的,所以我可能會錯。 任何幫助將不勝感激。

回答

1

你只需要取消設置鍵,你不想:

$result = array_map(function ($i) { 
    unset($i['customer_name'], $i['random_info']); 
    return $i; 
}, $listOrderArray['ListOrdersResult']['Orders']['Order']); 

更多array_map

或者你也可以選擇你想要的鍵:

$result = array_map(function ($i) { 
    return ['Title' => $i['Title'], 'customer_id' => $i['customer_id']]; 
}, $listOrderArray['ListOrdersResult']['Orders']['Order']); 

關於你的代碼和問題:

$count = count($listOrderArray['ListOrdersResult']['Orders']['Order']); 

//Cycle through each Order to extract the data I want 
for($i = 0; $count > $i; $i++) { 

沒有理由使用countfor循環,使用foreach

array([0] => { 
    array( 
    "Title" => $title, 
    "customer_id" => $customer_id 
    }, 
    [1] => { 
    "Title" => $nextTitle, 
    "customer_id" => $next_customer_id 
    } 
    ); 

沒有意義,這些大括號是什麼?你應該這樣寫,如果你想明白:

array(
    [0] => array( 
     "Title" => "fakeTitle0", 
     "customer_id" => "fakeCustomerId0" 
    ), 
    [1] => array(
     "Title" => "fakeTitle1", 
     "customer_id" => "fakeCustomerId1" 
    ) 
); 
+0

這是偉大的。謝謝。我不知道array_map和未設置,這些都非常有幫助。在我嘗試使用SimpleXML遍歷xml之前,直到我瞭解到json_decode(json_encode)爲止,這是相當困難的。再次感謝。 – twitterbaitrace

0

你有這個初始變量。

$listOrderArray = array(
    "ListOrdersResult" => array(
     "Orders" => array(
      "Order" => array(
       0 => array(
        "Title" => "productTitle", 
        "customer_name" => "customerName", 
        "customer_id" => "customerId", 
        "random_info" => "randomInfo", 
       ), 
       1 => array(
        "Title" => "productTitle", 
        "customer_name" => "customerName", 
        "customer_id" => "customerId", 
        "random_info" => "randomInfo", 
       ), 
      ) 
     ) 
    ) 
); 

你應該做的唯一的事情就是從三個外部數組中刪除內部數組。

這裏是解決方案:

$orders = $listOrderArray['ListOrdersResult']['Orders']['Order']; 
相關問題