PHP过滤子数组

时间:2015-12-23 13:38:27

标签: php arrays unique-key

让以下带有库的xml文件

http://pastebin.com/GFykW0tc

我需要显示标签(隐藏在字段-2中)

所以我创建了以下php代码

<?php $galleries = eg_return_gallery();
    foreach ($galleries['projects']['items'] as $image)
 { 
  echo $image['field-2']
  } 
    ?>

如何过滤重复的标签,以便只显示唯一标签?

eg_return_gallery - 因为它的名字暗示返回php数组(见下面的例子)

array(3) {
  ["name"]=>
  string(7) "galeria"
  ["title"]=>
  string(4) "Test"
  ["items"]=>
  array(1) {
    [0]=>
    array(10) {
      ["filename"]=>
      string(27) "uploads/galeria-foty/01.jpg"
      ["width"]=>
      int(1050)
      ["height"]=>
      int(740)
      ["thumb-0"]=>
      array(3) {
        ["filename"]=>
        string(52) "ExtraGallery/thumbs/galeria-foty/01-fill-200-300.jpg"
        ["width"]=>
        int(200)
        ["height"]=>
        int(300)
      }
      ["thumb-1"]=>
      array(3) {
        ["filename"]=>
        string(0) "ExtraGallery/thumbs/galeria-foty/01-10-0-200-300-200-300.jpg"
        ["width"]=>
        int(100)
        ["height"]=>
        int(150)
      }
      ["field-0"]=>
      string(10) "Test text"
      ["field-1"]=>
      string(4) "text"
      ["field-2"]=>
      bool(true)
      ["field-3"]=>
      string(0) ""
      ["field-4"]=>
      string(0) ""
    }
  }
}

2 个答案:

答案 0 :(得分:0)

您可以将每个标记存储在一个新数组中,然后从该数组中删除重复项:

<?php 
    $galleries = eg_return_gallery();
    $tags = array();

    foreach ($galleries['projects']['items'] as $image) { 
      $tags[] = $image['field-2'];
    } 

    $tags = array_unique($tags);   

    print_r($tags); 
?>

答案 1 :(得分:0)

我建议您查看eg_return_gallery的来源及其工作原理,但我建议您使用其中一个库http://php.net/manual/en/refs.xml.php,特别是SimpleXML。

但我认为您的XML结构存在问题 - 所以我建议您阅读XML规范http://www.w3.org/TR/2000/REC-xml-20001006