Коллеги, добрый день.
Стоит задача распарсить xml файл таким образом, чтобы задав значения двух элементов получить значение третьего элемента, находящегося на том же уровне, что и два известных.
Есть xml с примерно таким содержимым:
<Model>
<idModel>26016</idModel>
<sModel>DeLorean</sModel>
<idMark>26015</idMark>
</Model>
<Model>
<idModel>2986</idModel>
<sModel>Avenger</sModel>
<idMark>44</idMark>
</Model>
<Model>
<idModel>2976</idModel>
<sModel>Caliber</sModel>
<idMark>44</idMark>
</Model>
<Model>
<idModel>2977</idModel>
<sModel>Caravan</sModel>
<idMark>44</idMark>
</Model>
<Model>
<idModel>3393</idModel>
<sModel>Challenger</sModel>
<idMark>44</idMark>
</Model>
<Model>
<idModel>2978</idModel>
<sModel>Charger</sModel>
<idMark>44</idMark>
</Model>
Сама обработка сделана так:
foreach ($idref->xpath('//Model') as $item) {
if ($item->idMark == $idmark && $item->sModel == $smodel) {
$idmodel = $item->idModel;
break;
}
}
То есть зная $idmark и $smodel нам нужно получить значение $idmodel.
Скорее всего за перебор в цикле мне стоит надавать по рукам, но другого способа я не придумал.
А проблема кода в том, что если вместо $idmark поставить сразу значение (в нашем случае 44), либо вместо $smodel подставить в условие "Caliber", то условие отработает и произойдёт присвоение $idmodel.
А если оставить код как есть, условие не срабатывает.