2017-03-02 72 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']; 
相关问题