次のコードは、2 つの個別の配列を取得し、姓と名を反転させ (コンマも削除します)、これを出力します。
監督:バート&バーティ
ライター:バート&バーティ
プロデューサー:ルイーズ・ナイト
プロデューサー:マイルズ・ウィルクス
プロデューサー:アンディ・ウェルチ
俳優:クレイグ・パーキンソン
俳優:カミラ・ラザフォード
俳優:ポール・バッターチャージー
俳優:フォード・キーマン
俳優:マウレン・ザ・パグ
俳優:ハンナ・ウォルターズ
DP: リンダ・ホール
カット:マット・チョーダン
私がする必要があるのは、同様のグループをグループ化して、次のようなものを出力することです:
監督:バート&バーティ
ライター:バート&バーティ
製作:ルイーズ・ナイト、マイルズ・ウィルクス、アンディ・ウェルチ
出演: クレイグ・パーキンソン, カミラ・ラザフォード, ポール・バッターチャージー, フォード・キーマン, パグのモーレン, ハンナ・ウォルターズ
DP: リンダ・ホール
カット:マット・チョーダン
現在の PHP コード:
<?php
$arrayname=explode(":::",$dwzXmlRec_1->GetFieldValue("PERSON_NAME"));
$arraynamel=count($arrayname);
$arrayrole=explode(":::",$dwzXmlRec_1->GetFieldValue("PERSON_FUNCTION"));
$arrayrolel=count($arrayrole);
$name = "Lastname, Firstname";
$names = explode(", ", $name);
$name = $names[1] . " " . $names[0];
for($i=0;$i<$arrayrolel;$i++)
{
$names = explode(", ", $arrayname[$i]);
$name = $names[1] . " " . $names[0];
echo $arrayrole[$i].': '.$name.'<br />';
}
?>
更新: 1 つだけ質問があります。データは xml ノードから設定され、"as" 配列にあるため、1 つの役割が別の役割よりも優先されます。たとえば、「Actor」が最初に来て、次に「Director」が来ます。ディレクターが最初に来てからキャストになるように、それを逆にする簡単な方法はありますか? 不要な役割/人を非表示にするコードを追加しました。以下を参照してください。
// print out the list of people in each role
foreach($roles as $rolename => $people) {
if ($rolename!="Cut" && $rolename!="Producer" && $rolename!="DP" && $rolename!="Writer"){
if($rolename=="Actor") { $rolename="Cast";};
echo $rolename . ": " . implode(", ", $people) . "<br />";
}
}