Мне нужна помощь, я хочу, чтобы вы могли мне помочь;) Я призываю некоторых гуру в поисках мира и знаний хе-хе. OK Позвольте мне объяснить, у меня есть XML, и у него есть раздел, где он сегментирован, как показано ниже. Я могу успешно проанализировать его с помощью SimpleXML и XPath. Мои запросы XPath возвращают мне массив с результатами, а затем я могу повторить их. Нет проблем! =)Анализ XML и конкатенация разделенного URL с SimpleXML и XPath
Однако я хочу сделать это еще дальше, пытаясь сократить количество строк кода и улучшить код. Во-первых, посмотрите на мой код, вы можете копировать/вставить его и дать ему попробовать:
<?php
$xml_g='
<files>
<file>
<filename>itzafile</filename>
<ext>.tar.gz</ext>
<url protocol="http://">itzanexample.net/folder/subfolder/</url>
</file>
<file>
<filename>itzavideo</filename>
<ext>.mp4</ext>
<url protocol="ftp://">itzanotherurl.com/videos/</url>
</file>
</files>
';
function URLparts($xml) {
$xmlData= simplexml_load_string("$xml");
$protocol = $xmlData->xpath('//file/url/@protocol');
$url = $xmlData->xpath('//file/url');
$filename = $xmlData->xpath('//file/filename');
$ext = $xmlData->xpath('//file/ext');
echo 'The following it\'s echoed calling 4 different arrays:'."\n\t".$protocol[0], $url[0], $filename[0], $ext[0]."\n\t".$protocol[1], $url[1], $filename[1], $ext[1]."\n\n"; //prints the entire url! Right!
//These variables are arrays, so theorically it must be possible to create an array of arrays here:
$completeURL = array($protocol,$url,$filename,$ext);
//I've also tried this but it's just the same problem:
//$completeURL = array(array($protocol),array($url),array($filename),array($ext));
echo 'The following should be echoed with a two-dimensional array, but something fails:'."\n\t".$completeURL[0][0][0][0]."\n\n"; //Just prints "http://" WRONG! u.u
/*
* $completeURL[1][0][0][0] prints the domain+subfolder
* $completeURL[0][1][0][0] prints ftp://
* $completeURL[0][0][1][0] prints nothing...
*/
}
URLparts($xml_g);
?>
Как вы можете видеть, я хочу, чтобы избежать присоединения к URL, как: эхо $ протокола [0], $ URL [0], $ filename [0], $ ext [0], и я хочу сделать это проще с меньшим количеством переменных, чем в completeURL [0] [0] [0] [0] (первый узел файла со всеми его соответствующими частями) , completeURL [1] [1] [1] [1] (второй файловый узел со всеми частями URL) и т. д.
Но, очевидно, я делаю что-то неправильно ... Может кто-нибудь сказать мне, где находится ошибка?? Это должно быть связано с многомерного массива Я пытаюсь создать ...
Очевидно, что 'echo' выводит строковое значение каждого из узлов в наборе узлов, которое является результатом оценки выражения XPath. Важно знать, что при выполнении '|' результаты всегда отображаются * в порядке документа *. Итак, порядок аргументов '' 'действительно не имеет значения. –
AH Вот в чем причина! «Заказ документа» СПАСИБО Ты мне очень помог =) – Metafaniel
Metafaniel: Я рад, что был полезным. Если это так, вы можете рассмотреть более SO-подобную благодарность (+1 или принять). :) –