簡體   English   中英

PHP:HTML到PHP多維關聯數組

[英]PHP: HTML to PHP multidimensional associative array

使用xPath查詢,我試圖提取HTML值並將其放入PHP的關聯數組中。 我正在使用循環從表中獲取行和單元格。 但是,我無法弄清楚如何將數組中的單元格嵌入表示該行的數組中。 基本上,只是將表結構傳輸到數組。 理想情況下,將有助於為單元格數據分配鍵。

我嘗試將$ key作為一個數組和一個計數器組合以分配鍵/值對。 我和xpath在結構的不同點。 我可以填充數組,但是我可以,但是我似乎無法破解它。

$cells = array();
$cell_values = array();
$key = array("MM", "DD", "TIME", "WVHT", "SwH", "SwP", "SwD", "WWH", "WWP", "WWD", "STEEPNESS", "APD");
$i = 3;

while($i <= 5){
    $rows = $xpath->query('//table[@class="dataTable"][2]/tr['.$i.']');
    if (!is_null($rows)){
        foreach ($rows as $row) {
            $cells = $row->getElementsByTagName('td');
            $i++;
            foreach ($cells as $cell) {
                $cell_values[] = $cell->nodeValue;
                $dataOut[] = array_combine($key, $cell_values);
            }
        }   
    }   
}

預期:

Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] 
=> [10] => 
[11] => Array ( [MM] => 02 [DD] => 17 [TIME] => 11:30 am [WVHT] 
=> 3.0 [SwH] => 0.3 [SwP] => 10.5 [SwD] => SE [WWH] => 2.6 [WWP] => 8.3 
[WWD] => SE [STEEPNESS] => AVERAGE [APD] => 4.4 ) 
//Next set of row data with $keys
[12] => Array ( [MM] => 02 [DD] => 17 [TIME] => 11:00 am [WVHT] => 3.3 [SwH] 
=> 0.3 [SwP] => 10.5 [SwD] => SE [WWH] => 2.6 [WWP] => 8.3 [WWD] => SE 
[STEEPNESS] => AVERAGE [APD] => 4.4 ) 
[13] => Array... etc. 

我得到什么:

Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] 
=> [10] => [11] => Array ( [MM] => 02 [DD] => 17 [TIME] => 11:30 am [WVHT] 
=> 3.0 [SwH] => 0.3 [SwP] => 10.5 [SwD] => SE [WWH] => 2.6 [WWP] => 8.3 
[WWD] => SE [STEEPNESS] => AVERAGE [APD] => 4.4 ) [12] => [13] => [14] => 
[15] => [16] => [17] => [18] => [19] => [20] => [21] => [22] => [23] => [24] 
=> [25] => [26] => [27] => [28] => [29] => [30] => [31] => [32] => [33] => 
[34] => [35] => )

如果將鍵定義為$key數組中的值而不是鍵,則可以將<td>的值與array_combine ,以生成結果數組的行。

$rows = $xpath->query('//table[@class="dataTable"][2]/tr');

// define these as values so you can use them in array_combine    
$key = array("WVHT", "SwH", "SwD", "WWH", "WWP", "WWD", "STEEPNESS", "AMD");

$data = array();
$cells = array();

if (!is_null($rows)) {
    foreach ($rows as $row) {
        $cells = $row->getElementsByTagName('td');

        // get all the cell values from the row
        $row_values = [];
        foreach ($cells as $cell) {
            $row_values[] = $cell->nodeValue;
        }

        // combine the keys with the values for this row and add the row to $data
        $data[] = array_combine($key, $row_values);
    }
}

暫無
暫無

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

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