Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何限制,按。。。XML/PHP_Php_Xml - Fatal编程技术网

如何限制,按。。。XML/PHP

如何限制,按。。。XML/PHP,php,xml,Php,Xml,EX文件music.xml: <musics> <music id="1"> <title>Title 1</title> <url>music/1.mp3</url> </music> <music id="2"> <title>Title 2</title> <url>music/2.mp3<

EX文件music.xml:

<musics>
   <music id="1">
      <title>Title 1</title>
      <url>music/1.mp3</url>
   </music>
   <music id="2">
      <title>Title 2</title>
      <url>music/2.mp3</url>
   </music>
   <music id="3">
      <title>Title 3</title>
      <url>music/3.mp3</url>
   </music>
   <music id="4">
      <title>Title 4</title>
      <url>music/4.mp3</url>
   </music>
</musics>
如何选择限制(X,Y)
如何按标题或url排序返回一个数组,这样您就可以随心所欲地使用它了

您只需创建自己的函数,下面是一个演示

<?php
$xml = new SimpleXMLElement('music.xml', NULL, TRUE);
$result = $xml->xpath('music');

echoPre(limitXml($result, 0, 1), "Limited XML Result");
echoPre(sortXml($result, 'title', 'desc'), "Sorted XML Result");

function limitXml($array, $x, $y = 0) {
   return array_slice($array, $x, $x + $y - count($array));
}

function sortXml($array, $sortBy, $sortType = "asc") {

   if ($sortBy == "title")
      usort($array,'cmpTitle');
   else if ($sortBy == "url")
      usort($array,'cmpUrl');
   return ($sortType == 'desc') ? array_reverse($array) : $array;
}

function cmpTitle($a, $b) {
  return strcmp($a->title, $b->title);
}

function cmpUrl($a, $b) {
  return strcmp($a->url, $b->url);
}

function echoPre($el, $title) {
  echo "<h1>".$title."</h2><pre>";
  print_r($el);
  echo "</pre>";
}
?>

<?php
$xml = new SimpleXMLElement('music.xml', NULL, TRUE);
$result = $xml->xpath('music');

echoPre(limitXml($result, 0, 1), "Limited XML Result");
echoPre(sortXml($result, 'title', 'desc'), "Sorted XML Result");

function limitXml($array, $x, $y = 0) {
   return array_slice($array, $x, $x + $y - count($array));
}

function sortXml($array, $sortBy, $sortType = "asc") {

   if ($sortBy == "title")
      usort($array,'cmpTitle');
   else if ($sortBy == "url")
      usort($array,'cmpUrl');
   return ($sortType == 'desc') ? array_reverse($array) : $array;
}

function cmpTitle($a, $b) {
  return strcmp($a->title, $b->title);
}

function cmpUrl($a, $b) {
  return strcmp($a->url, $b->url);
}

function echoPre($el, $title) {
  echo "<h1>".$title."</h2><pre>";
  print_r($el);
  echo "</pre>";
}
?>