私がやろうとしているのは、配列をソートし、複数の重複を削除することです。私が持っているものは次のとおりです。
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 つしかない場合は、それが返されます。どんな助けでも素晴らしいでしょう。