DOMDocument :: createElement本身与appendChild配对的区别

What is the difference between

    $table = $doc->createElement('table');
    $doc->appendChild($table);

    $tr = $doc->createElement('tr');
    $table->appendChild( $tr );

    $td = $doc->createElement('td');
    $tr->appendChild($td);

and

    $table = $doc->createElement('table');

    $tr = $doc->createElement('tr');
    $table->appendChild( $tr );

    $td = $doc->createElement('td', 'Competition');
    $tr->appendChild($td);

Is it really necessary to have the first append child? It seems to work without it, but I don't see any noticeable changes when I remove it. I just want to confirm it's the same thing in that case.

What about other single tags?

$p1 = $doc->createElement('p', 'test text1');
$p2 = $doc->createElement('p', 'test text1');

Would it be necessary to create an append child for each $p1 and $p2?

From the documentation:

DOMDocument::createElement

This function creates a new instance of class DOMElement. This node will not show up in the document unless it is inserted with (e.g.) DOMNode::appendChild().

Therefore you must call DOMNode::appendChild() to insert the node into the document. Running your second block of code will not do so (Tested under: PHP 5.3.5, libxml 2.7.7).