2017-03-02 5 views
0

多次元配列からデータを抽出し、自分のデータベースに入れてデータベースにロードできるようにしようとしています。mulit-arrayから抽出して自分自身に入れる - 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

あなただけが望んでいない未設定のキーにあります。array_map

について

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

もっとまたはあなたはまた、あなたがしたいキーを選択することができます。

$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++) { 

countループとforループを使用する理由はありません。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", 
       ), 
      ) 
     ) 
    ) 
); 

3つの外側の配列から内側の配列を削除するだけです。

$orders = $listOrderArray['ListOrdersResult']['Orders']['Order']; 
関連する問題