2016-12-20 20 views
-1

このデータから配列を作成しようとしていますが、取得できません。私はarray_merge関数で試しましたが、配列が正しく構築されません。これは私のコードです、私はテーブルの異なるフィールドを持つ配列を作成したいと思います。データから配列を作成する

<?php 
require('extractorhtml/simple_html_dom.php'); 
$dom = new DOMDocument(); 

//load the html 
$html = $dom->loadHTMLFile("http:"); 


//discard white space 
$dom->preserveWhiteSpace = false; 

//the table by its tag name 
$tables = $dom->getElementsByTagName('table'); 

//get all rows from the table 
$rows = $tables->item(0)->getElementsByTagName('tr'); 
echo '<input type="text" id="search" placeholder="find" />'; 
echo '<table id="example" class="table table-bordered table-striped display">'; 
echo '<thead>'; 
echo '<tr>'; 
echo '<th>Date</th>'; 
echo '<th>Hour</th>'; 
echo '<th>Competition</th>'; 
echo '<th>Event</th>'; 
echo '<th>Chanel</th>'; 
echo '</tr>'; 
echo '</thead>'; 
echo '<tbody>'; 
// loop over the table rows 
foreach ($rows as $row) 
{ 
    // get each column by tag name 
    $cols = $row->getElementsByTagName('td'); 
    // echo the values 
    echo '<tr>'; 
    echo '<td>'.$cols->item(0)->nodeValue.'</td>'; 
    echo '<td>'.$cols->item(1)->nodeValue.'</td>'; 
    echo '<td>'.$cols->item(3)->nodeValue.'</td>'; 
    echo '<td class="text-primary">'.$cols->item(4)->nodeValue.'</td>'; 
    echo '<td>'.$cols->item(5)->nodeValue.'</td>'; 
    echo '</tr>'; 
} 
echo '</tbody>'; 
echo '</table>'; 
?> 
+0

ここで、array_mergeはどこですか?そして、どこで配列を作成しようとしていますか? –

+0

テーブルの日付、時間、競合とチャンネルのデータを配列に作成したいのですが、array_mergeを試しましたが、テーブルの各フィールドのデータを取得して配列に正しく入力する方法がわかりません – htmlpower

+0

'$ tables'にありますか?また、関連する試行を表示します。それは、あなたが現在考えていることが分かっているのを助けるのに、今は非常に不明です。 – nerdlyist

答えて

2

配列をマージする必要はありません。新しい配列にプッシュして2次元配列を作成するだけです。

$new_array = array(); 
foreach ($rows as $row) 
{ 
    // get each column by tag name 
    $cols = $row->getElementsByTagName('td'); 
    // echo the values 
    echo '<tr>'; 
    echo '<td>'.$cols->item(0)->nodeValue.'</td>'; 
    echo '<td>'.$cols->item(1)->nodeValue.'</td>'; 
    echo '<td>'.$cols->item(3)->nodeValue.'</td>'; 
    echo '<td class="text-primary">'.$cols->item(4)->nodeValue.'</td>'; 
    echo '<td>'.$cols->item(5)->nodeValue.'</td>'; 
    echo '</tr>'; 
    $new_array[] = array(
     'date' => $cols->item(0)->nodeValue, 
     'hour' => $cols->item(1)->nodeValue, 
     'competition' => $cols->item(3)->nodeValue, 
     'channel' => $cols->item(5)->nodeValue 
    ); 
} 
+0

ありがとうございました – htmlpower

1

あなた<th>値に基づいて、あなたはあなただけではなく、新たなHTMLを生成するよりも、配列に値を追加するために、あなたのforeachループ内のコードを変更する必要がしたいように見えるその値、そう含んでいる列を知っていますそれらと一緒に。このループ後

foreach ($rows as $row) 
{ 
    // get each column by tag name 
    $cols = $row->getElementsByTagName('td'); 

    $array['date'] = $cols->item(0)->nodeValue; 
    $array['hour'] = $cols->item(1)->nodeValue; 
    $array['competition'] = $cols->item(3)->nodeValue; 
    $array['event'] = $cols->item(4)->nodeValue; 
    $array['chanel'] = $cols->item(5)->nodeValue; 
    $result[] = $array; 
} 

$resultはそれぞれ内側アレイ一<tr>を表す<td> sの値を含む配列の配列、あろう。

関連する問題