foreach ($response as $object) {
$basename = basename($object);
$structure = explode("/", $object);
echo $structure[0] . '<br>';
...
}
echo'ing out での重複を防ぎたい場合は$structure[0]
、履歴を保持するなどして、すでに重複しているかどうかを確認する必要があります。
$history = array();
foreach ($response as $object) {
$name = strstr($object, "/", true);
if ($name !== false && !isset($history[$name])) {
$history[$name] = 1;
echo $name . '<br>';
}
...
}
おそらく、コードを合理化したいでしょう。確認してみましょう:
foreach ($response as $object) {
$basename = basename($object);
$structure = explode("/", $object);
echo $structure[0] . '<br>';
}
ライン$basename = basename($object);
は使用しません。削除できます:
foreach ($response as $object) {
$structure = explode("/", $object);
echo $structure[0] . '<br>';
}
"/"
次に、最初のまでの文字列の一部のみが必要です。strstr
関数はそのために便利です。
foreach ($response as $object) {
$part = strstr($object, "/", true);
FALSE === $part && $part = $object;
echo $part . '<br>';
}
すでに単純化したので、単純なマッピング関数を作成できます。
$map = function($v) {
$k = strstr($v, "/", true);
FALSE === $k && $k = $v;
return $k;
};
をマップします$response
:
$mapped = array_map($map, $response);
そしてそれを一意にします:
$unique = array_unique($mapped);
そして、仕事は終わりました。コードははるかに読みやすくなっています。
$map = function($v) {
$k = strstr($v, "/", true);
FALSE === $k && $k = $v;
return $k;
};
$mapped = array_map($map, $response);
$unique = array_unique($mapped);
foreach ($unique as $name) {
echo $name, "<br>\n";
}
追加の利点はここにあります。出力を気にかけた瞬間に、出力されるデータはすでに整然としており、適切に利用できます。出力自体はアプリケーションの一部としてカウントされるため、データ処理と混合しないでください。IPO モデルを参照してください。