Цикл PHP для поиска определенных значений ячеек во всех строках, где строки содержат определенный столбец - PullRequest
0 голосов
/ 27 февраля 2019

Я очистил таблицу html, используя simplehtmldom ... структура таблицы html ... здесь

0241657 02022202143 2018000003 042018 13552 1001 Basic Pay 32340.00 0 0241657 02022202143 2018000003 042018 13552 1006 Dearness Allowances 7795.00 0 0241657 02022202143 2018000003 042018 13552 1007 House Rent Allowance 6468.00 0 0241657 02022202143 2018000003 042018 13552 2003 APGLI Subscription 0 1150.00 0241657 02022202143 2018000003 042018 13552 2005 GIS Ins Fund 0 60.00 0241657 02022202143 2018000003 042018 13552 2006 Professional Tax 0 200.00 0241657 02022202143 2018000003 042018 13552 2043 CPS(New GPF) 0 4014.00 0241657 02022202143 2018000003 042018 13552 2091 EHF SUBSCRIPTION 0 90.00 0241657 02022202143 2018000004 052018 142720 1001 Basic Pay 32340.00 0 0241657 02022202143 2018000004 052018 142720 1006 Dearness Allowances 7795.00 0 0241657 02022202143 2018000004 052018 142720 1007 House Rent Allowance 6468.00 0 0241657 02022202143 2018000004 052018 142720 2003 APGLI Subscription 0 1150.00 0241657 02022202143 2018000004 052018 142720 2005 GIS Ins Fund 0 60.00 0241657 02022202143 2018000004 052018 142720 2006 Professional Tax 0 200.00 0241657 02022202143 2018000004 052018 142720 2043 CPS(New GPF) 0 4014.00 0241657 02022202143 2018000004 052018 142720 2091 EHF SUBSCRIPTION 0 90.00 0241657 02022202143 2018000009 062018 344121 1001 Basic Pay 33220.00 0 0241657 02022202143 2018000009 062018 344121 1006 Dearness Allowances 8007.00 0 0241657 02022202143 2018000009 062018 344121 1007 House Rent Allowance 6644.00 0 0241657 02022202143 2018000009 062018 344121 1008 City Compensatory Allowance 0.00 0241657 02022202143 2018000009 062018 344121 1025 Interim Relief 0.00 0 0241657 02022202143 2018000009 062018 344121 2003 APGLI Subscription 0 1150.00 0241657 02022202143 2018000009 062018 344121 2005 GIS Ins Fund 0 60.00 0241657 02022202143 2018000009 062018 344121 2006 Professional Tax 0 200.00 0241657 02022202143 2018000009 062018 344121 2043 CPS(New GPF) 0 4123.00 0241657 02022202143 2018000009 062018 344121 2091 EHF SUBSCRIPTION 0 90.00

Здесь 4-я ячейка (столбец) в последнемстрока 062018. Теперь Как найти все вышеупомянутые строки, которые содержат одинаковое значение столбца (4-й столбец последней строки ... т.е. 062018), а затем получить значения 7-го, 8-го, 9-го столбцов (значения ячеек) этих строкэхо.

Я могу получить значения только в последней строке, но не могу извлечь оставшиеся выше значения ячеек строки, используя simplehtmldom ... как это

$mmyy = $html->find('table',1)->find('tr',-1)->find('td',3)->plaintext;
$tds = $html->find('table',1)->find('td');
foreach($tds as $td){

 if($td->plaintext == $mmyy){

    $td7 = $td->next_sibling()->next_sibling()->next_sibling();
    $td8 = $td->next_sibling()->next_sibling()->next_sibling()->next_sibling();
    $basic = $td7->plaintext ;   
    $pay = $td8->plaintext ; 
    break; 
 } }

 echo $basic;
 echo $pay;

как php цикл иполучить эти значения ... для всех строк, содержащих одинаковое значение ячейки 4-го столбца последней строки.

1 Ответ

0 голосов
/ 27 февраля 2019
<?php

$input = "
<table>
<tr> <td>0241657</td> <td>02022202143</td><td>2018000003</td> <td>042018</td><td>13552</td> <td>2091</td>
<td>EHF SUBSCRIPTION</td><td>0</td><td>90</td></tr>
<tr><td>0241657</td> <td>02022202143</td><td>2018000009</td><td>062018</td> <td>344121</td><td>1006</td>
<td>Dearness Allowances</td><td>8007.00 0</td></tr>
</table>
";

function getTD($text) {
    $text = explode("<td>",$text);
    return trim($text[1]);
}

$result = array();
$input = explode("<tr>",$input); // get lines table
array_shift($input); //delete up first line

foreach($input as $str)
{
    $str = explode("</td>",$str); // get td separate
    $dt = getTD($str[3]);
    if ($dt == "062018") // you if
    {
    $tores = array();
    for($i=5; $i<8; $i++) $tores[] = getTD($str[$i]); //copy values
    $result[] = $tores;
    }
}

print_r($result);

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...