webForumDet fria alternativet

SimpleXML och PHP5

2 svar · 355 visningar · startad av Alamartimo

AlamartimoMedlem sedan okt. 2004129 inlägg
#1

Har en XML fil som ser ut ungefär så här men med allt från 5-22 <Driver>:

<RaceResults>
<Race>
<Driver>
<Name>Hannu Alamartimo</Name>
<CarNumber>36</CarNumber>
<TeamName>TP Competition</TeamName>
<Position>4</Position>
<Lap num="1" p="7" et="40.3153" s1="41.1980" s2="35.5108" s3="35.8587" fuel="0.725">112.5675</Lap>
<Lap num="2" p="7" et="152.8828" s1="31.5124" s2="34.3963" s3="34.9770" fuel="0.678">100.8856</Lap>
<Lap num="3" p="7" et="253.7685" s1="31.6049" s2="34.0482" s3="34.8269" fuel="0.631">100.4801</Lap>
</Driver>

<Driver>
<Name>Test Testsson</Name>
<CarNumber>19</CarNumber>
<TeamName>TP Competition</TeamName>
<Position>5</Position>
<Lap num="1" p="6" et="40.3153" s1="40.7548" s2="34.9677" s3="35.4586" fuel="0.725">111.1811</Lap>
<Lap num="2" p="6" et="151.4965" s1="32.0947" s2="34.1821" s3="34.6768" fuel="0.682">100.9536</Lap>
<Lap num="3" p="6" et="252.4501" s1="32.5252" s2="33.8196" s3="34.7463" fuel="0.635">101.0911</Lap>
</Driver>
</Race>
</RaceResults>

I alla fall har jag inga problem att få fram allt annat med SimpleXML men just det som finns inom <Lap> har jag svårt att få ut mer än num="1".

Har denna kod än så länge och skulle behöva ha hjälp med att få ut de andra 2 <Lap> också i samma veva.

foreach ($xml->RaceResults->Race->Driver as $driver) {
echo $driver->Name, '<br />';
echo $driver->CarNumber, '<br />';
echo $driver->TeamName, '<br />';
echo $driver->CarType, '<br />';
echo $driver->Position, '<br />';
echo $driver->Lap['s1'], '<br />';
echo $driver->Lap['s2'], '<br />';
echo $driver->Lap['s3'], '<br />';
echo $driver->Lap, '<br />';
}
aasahMedlem sedan mars 20033 451 inlägg
#2

Under förutsättning att Name, CarNumber osv är variabler i en klass/ett objekt som du kallar för $driver... Byt ut alla kommatecken nedan mot punkter, så funkar i alla fall strängkonkatineringen för utskrift.

Alamartimo skrev:

foreach ($xml->RaceResults->Race->Driver as $driver) {
echo $driver->Name, '<br />';
echo $driver->CarNumber, '<br />';
echo $driver->TeamName, '<br />';
echo $driver->CarType, '<br />';
echo $driver->Position, '<br />';
echo $driver->Lap['s1'], '<br />';
echo $driver->Lap['s2'], '<br />';
echo $driver->Lap['s3'], '<br />';
echo $driver->Lap, '<br />';
}
AlamartimoMedlem sedan okt. 2004129 inlägg
#3

Tack för infon om "kommatecken mot punkter"

Löste problemet i alla fall.

Lösningen:

foreach ($xml->RaceResults->Race->Driver as $driver) {

echo $driver->Name. '<br />';
echo $driver->CarNumber. '<br />';
echo $driver->TeamName. '<br />';
echo $driver->CarType. '<br />';
echo $driver->Position. '<br />';

foreach ($driver->Lap as $lap) {

echo $lap['s1']. '<br />';
echo $lap['s2']. '<br />';
echo $lap['s3']. '<br />';
echo $lap. '<br />';
echo '<br />';
 }
}
Genererad på 383 ms · cache AV · v20260730165559-full.f96bc7eb