2013-07-03 100 views
0

我正在使用PHPQuery從HTML讀取一些內容,我無法通過它的索引使用方括號表示法獲取元素。按索引獲取元素,[n]

參見這個簡單的例子:

$html = '<div><table id="theTable"><tr><td>FIRST TD</td><td>SECOND TD</td><td>THIRD TD</td></tr></table></div>'; 

$pq = phpQuery::newDocumentHTML($html); 

$table = $pq->find('#theTable'); 
$tds = $table->find('td'); 

echo "GETTING BY INDEX:\n\n"; 
echo '$tds[1] = ' . $tds[1]; 

echo "\n\n\n"; 

echo "GETTING IN FOREACH:\n\n"; 
foreach($tds as $key => $td){ 
    echo '$tds[' . $key . '] = ' . pq($td) . "\n"; 
} 

的這個輸出是:

抵達BY INDEX:

$ TDS [1] =

抵達IN FOREACH:

$ tds [0] = FIRST TD

$ TDS [1] =第二個TD

$ TDS [2] =第三TD

我本來期望,我可以用方括號得到$tds[1]內容,但好像沒有。 如何通過索引獲取它?

回答

1

剛發佈問題後才找到答案。而不是方括號你需要使用eq(n)

echo '$tds[1] = ' . $tds->eq(1); 
2

嘗試一個var_dump($tds),它會告訴你什麼是完全在tds裏面。也許這些密鑰實際上是字符串,你應該使用:

echo "GETTING BY INDEX:\n\n"; 
echo '$tds['1'] = ' . $tds['1']; 

編輯:另外,您的foreach你使用PQ(),也許你應該使用這個

echo "GETTING BY INDEX:\n\n"; 
echo '$tds[1] = ' . pq($tds[1]); 
+0

謝謝,但不起作用,索引不是字符串。 'var_dump'打印整個巨大的dom樹,它沒有索引。 – Drahcir

+0

你確定在兩次測試之間沒有更多的代碼嗎?也許你正在爲'$ tds'變量分配一些不同的東西。編輯:沒關係,我在下面看到你的答案。 – Orestes

0

嘗試以下操作:

echo '$tds[1] = ' . $tds['1'];