簡體   English   中英

在php中從復雜的關聯數組中提取數據並放入新數組中

[英]Extracting data from complicated associative array in php and put into new array

我有一個看起來像這樣的復雜數組:

$input=array(
    (int) 0 => array(
        'XXX' => array(
            'id' => '7',
            'p_id' => '1',
            'address' => '9463',
            'arrival_time' => '2014-05-01 03:30:00'
        ),
        'YYY' => array(
            'id' => '1',
            'iden' => '1111',
            'name' => 'Tom'
        )
    ),
    (int) 1 => array(
        'XXX' => array(
            'id' => '9',
            'p_id' => '2',
            'address' => '9469',
            'arrival_time' => '2014-05-27 16:43:58'
        ),
        'YYY' => array(
            'id' => '2',
            'iden' => '2222',
            'name' => 'Sam'
        )
    ),
    (int) 2 => array(
        'XXX' => array(
            'id' => '3',
            'p_id' => '3',
            'address' => '9462',
            'arrival_time' => '2014-04-21 14:05:00'
        ),
        'YYY' => array(
            'id' => '3',
            'iden' => '3333',
            'name' => 'James'
        )
    )
)

我想將其轉換為如下所示;

$output=array(
    (int) 0 => array(
        'name' => 'Tom',
        'iden' => '1111',
        'address' => '9463'
    ),
    (int) 1 => array(
        'name' => 'Sam',
        'iden' => '2222',
        'address' => '9469'
    ),
    (int) 2 => array(
        'name' => 'James',
        'iden' => '3333',
        'address' => '9462'
    )

我寫了一些代碼來解決這個問題:

foreach ( $input as $key => $value)
{
    $output['name']=$input[$key]['YYY']['name'];
    $output['iden']=$input[$key]['YYY']['iden'];
    $output['address']=$input[$key]['XXX']['address'];
}

不幸的是,它僅檢索輸入數組的最后一個元素。

有人可以提供更多幫助嗎?

非常感謝你。

您將在每次迭代中覆蓋值,因為您總是寫入$output['name']等。

foreach ( $input as $key => $value)
{
    $output[$key] = array(
        'name' => $value['YYY']['name'],
        'iden' => $value['YYY']['iden'],
        'address' => $value['XXX']['address']
    );
}

此處的關鍵是使用$output[$key]而不是$output這樣,您將在每次迭代中添加一個新元素。

$input[$key]$value也是等效的,所以我使用了較短的變體;)

在您的foreach循環中嘗試:

foreach ( $input as $key=>$value)
{
    $output[$key]['name']=$value['YYY']['name'];
    $output[$key]['iden']=$value['YYY']['iden'];
    $output[$key]['address']=$value['XXX']['address'];
}

您必須在foreach中向數組添加索引:$ output [$ key] [“ name”] = ...;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM