对多维数组进行排序并从XML中删除重复项

时间:2013-01-22 14:03:52

标签: php arrays xml sorting

我要做的是对一个数组进行排序并删除多个副本,这就是我所拥有的:

我使用PHP Simple HTML DOM Parser绘制XML文件并将其转换为数组,XML的格式如下:

<Row>

    <Cell ss:StyleID="s17"><Data ss:Type="String">Last Name</Data></Cell>
    <Cell ss:StyleID="s17"><Data ss:Type="String">First Name</Data></Cell>
    <Cell ss:StyleID="s17"><Data ss:Type="String">Address</Data></Cell>
    <Cell ss:StyleID="s17"><Data ss:Type="String">City</Data></Cell>
    <Cell ss:StyleID="s17"><Data ss:Type="String">Province</Data></Cell>
    <Cell ss:StyleID="s17"><Data ss:Type="String">Postal Code</Data></Cell>
    <Cell ss:StyleID="s17"><Data ss:Type="String">Year</Data></Cell>

</Row>

我正在寻找将单元格的名字和姓氏组合在一起,然后将其与数组的其余部分进行比较。

function search($array, $key, $value)
{
    $results = array();

    if (is_array($array))
    {
        if (isset($array[$key]) && $array[$key] == $value)
            $results[] = $array;

        foreach ($array as $subarray)
            $results = array_merge($results, search($subarray, $key, $value));
    }

    return $results;
}

$simple  = file_get_html('DOM/mail.xml');

$i = 0;

foreach($simple->find('row') as $article) {

    $item['name']     = $article->find('cell', 0)->plaintext.' '.$article->find('cell', 1)->plaintext;

    $item['address']     = $article->find('cell', 2)->plaintext;

    $item['city']     = $article->find('cell', 3)->plaintext;

    $item['province']     = $article->find('cell', 4)->plaintext;

    $item['postal']     = $article->find('cell', 5)->plaintext;

    $item['year']     = $article->find('cell', 6)->plaintext;

    $item['count']     = $i;

    $i++;

    $articles[] = $item;

}

$a[] = "Buckley Terry";
$a[] = "test bar";
$a[] = "Grills Levi";

foreach ($a as $test) {

    $b[] = search($articles, 'name', $test);

}

print_r($b);

但所有这一切都会返回多个名称实例。即如果只有一个条目,它将返回它。任何帮助都是极好的。

0 个答案:

没有答案