SimpleXML döngü Nasıl sipariş

3 Cevap php

Ben kimliği benim döngü sipariş neeed

benim xml doc bu gibi görünüyor

<gig id="16">
        <date>Fri. 23rd Apr</date>
        <venue>Sneaky Pete's</venue>
        <area>Edinburgh</area>
        <telephone>www.ticketweb.co.uk</telephone>  
        <price>£10</price>
        <time>Time TBA</time>
    </gig>  

Gördüğünüz gibi Yani ben bu kimliği benim dize sipariş etmek gerekir

çıkışı için benim kod

<?php 
foreach ($xml->gig as $dateof){
echo '<tr><td><img src="images/arrow.jpg" /></td><td width="200px" class="loop-Date">' . $dateof->date . '</td><td width="700px">' . $dateof->venue . '</td></tr>';
}
?>

Umarım bu mantıklı

3 Cevap

$array = array();
foreach ($xml->gig as $gig) {
   $id = (int)$gig->attributes()->id;
   $array[$id] = $gig;
}

Sipariş KODU: ksort($array);

foreach ($array as $id => $gig) {
   echo '<tr><td><img src="images/arrow.jpg" /></td><td width="200px" class="loop-Date">' . (string)$gig->date . '</td><td width="700px">' . (string)$gig->venue . '</td></tr>';
}

Dizeleri (veya tamsayılar, ...) için SimpleXMLObjects döküm asla unutmayın.

Hiçbir sipariş-by seçeneği (standart) xpath var, ama içinde xsl(t), örneğin var <xsl:sort>

Sık sık genellikle bir XPath sorgusunun sonucuna dayalı XML öğelerini sıralamak isteklerini bakın.

Bu amaç için, I-SimpleDOM için, bir yöntem, sortedXPath () yazdım. Bu ilk argüman bir XPath ifadesi ve bunun yerine XPath ifadeleri kullanır dizi tuşlarını kullanarak olması dışında array_multisort() olarak aynı imzaya sahiptir. Örneğin, burada id Özelliğe göre sıralanmış tüm <gig/> elemanları, almak için:

include 'SimpleDOM.php';

$gigs = simpledom_load_string(
    '<gigs>
        <gig id="16">
            <date>Fri. 23rd Apr</date>
        </gig>
        <gig id="15">
            <date>Fri. 16th Apr</date>
        </gig>
    </gigs>'
);

foreach ($gigs->sortedXPath('//gig', '@id') as $gig)
{
    echo 'gig id ', $gig['id'], ' - date: ', $gig->date, "\n";
}