从mulit数组中提取并将其放入我自己的 - php

时间:2017-03-02 18:06:00

标签: php arrays multidimensional-array foreach

我正在尝试从多维数组中提取数据,然后将其放入我自己的数据中,以便将其加载到我的数据库中。

来源:

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
    }
    );

最终目标是通过按记录收集数据然后将其加载到数据库而不是通过创建新记录然后返回并修改该记录来加载信息,从而更容易将信息加载到数据库中。对我来说,似乎需要更多的资源并且数据不一致的可能性更高,但我是新的,所以我可能是错的。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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"
    )
);

答案 1 :(得分: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'];
相关问题