1

私がやろうとしているのは、配列をソートし、複数の重複を削除することです。私が持っているものは次のとおりです。

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);

しかし、これは name の複数のインスタンスを返すだけです。つまり、エントリが 1 つしかない場合は、それが返されます。どんな助けでも素晴らしいでしょう。

4

0 に答える 0