首页 > 解决方案 > 从常规数组创建多维数组

问题描述

我正在使用简单的 html dom 来获取表格的内容:

foreach($html->find('#maintable .table tr td') as $a) {
     $array[] = $a->plaintext;
}

print_r($array);

返回的数组如下所示:

Array ( 
    [0] => 1 
    [1] => 0xd35a2d8c651f3eba4f0a044db961b5b0ccf68a2d
    [2] => 309953166.54621424
    [3] => 30.9953%
    [4] => 2
    [5] => 0xe17c20292b2f1b0ff887dc32a73c259fae25f03b
    [6] => 200000001
    [7] => 20.0000%
    [8] => 3
    [9] => 0x0000000000000000000000000000000000000000
    [10] => 129336426
    [11] => 12.9336%
)

我想从上面的数组创建一个新的多维数组,从第一行开始每三行跳过一行,如下所示:

New Array (

[1]
    ['address'] => 0xd35a2d8c651f3eba4f0a044db961b5b0ccf68a2d
    ['amount'] => 309953166.54621424
    ['percent'] => 30.9953%
[2]
    ['address'] => 0xe17c20292b2f1b0ff887dc32a73c259fae25f03b
    ['amount'] => 200000001
    ['percent'] => 20.0000%
[3] 
    ['address'] => 0x0000000000000000000000000000000000000000
    ['amount'] => 129336426
    ['percent'] => 12.9336%

)

在新数组中,“address”代表原始数组中的 [1] [5] 和 [9]。“数量”代表[2] [6]和[10],“百分比”代表[3] [7]和[11]。

我怎样才能做到这一点?谢谢

标签: phparraysmultidimensional-array

解决方案


鉴于您示例中的输入数组,这应该符合您的要求:

$newArray = [];
for($i=1; $i<count($oldArray); $i=($i+4)){
    $newArray[] = [
        'address'   => (isset($oldArray[$i]))     ? $oldArray[$i] : '',
        'amount'    => (isset($oldArray[($i+1)])) ? $oldArray[($i+1)] : '',
        'percent'   => (isset($oldArray[($i+2)])) ? $oldArray[($i+2)] : '',
    ];
}

print_r($newArray);

生产:

Array
(
    [0] => Array
        (
            [address] => 0xd35a2d8c651f3eba4f0a044db961b5b0ccf68a2d
            [amount] => 309953166.54621424
            [percent] => 30.9953%
        )

    [1] => Array
        (
            [address] => 0xe17c20292b2f1b0ff887dc32a73c259fae25f03b
            [amount] => 200000001
            [percent] => 20.0000%
        )

    [2] => Array
        (
            [address] => 0x0000000000000000000000000000000000000000
            [amount] => 129336426
            [percent] => 12.9336%
        )
)

推荐阅读