2012-10-17 28 views
4

我有以下代碼抓住兩個單獨的陣列,翻轉姓和姓名(也除去逗號),並輸出這樣的:分組數組項

導演:伯特&貝爾蒂

作家:伯特&伯蒂

製片人:路易斯·奈特

監製:萬里威爾克斯

製片人:安迪·韋爾奇

演員:克雷格·帕金森

演員:卡米拉盧瑟福

演員:保羅Bhattarcharjee

演員:福特Kieman

演員:Maurren哈巴狗

演員:漢娜沃爾特斯

DP:琳達·霍爾

剪切:馬特Chodan

我需要做的就是將類似的羣體輸出是這樣的:

導演:伯特&伯蒂

作者:Bert & Bertie

製片人:路易斯·奈特,萬里威爾克斯,安迪·韋爾奇

演員:克雷格·帕金森,卡米拉盧瑟福,保羅Bhattarcharjee,福特Kieman,Maurren哈巴狗,漢娜·沃爾特斯

DP:琳達·霍爾

剪切:馬特Chodan

當前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 />'; 
    } 
?> 

更新:只是一個問題,數據是從xml節點設置的,因爲它在數組「as」中是一個角色在另一個角色之前。例如,「演員」先出現,然後是「導演」。有沒有簡單的方法可以扭轉它,讓導演先來演員然後演員?我加入的代碼隱藏不需要的角色/人民見下圖:

// 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 />"; 
    } 
} 
+0

如果角色名稱是事先已知的,你可以把角色名在數字陣列和迭代的是,拉出只是要顯示角色名稱,順序你想要顯示它們。像'$ displayRoles = array(「導演」,「製片人」,「演員」,...);' –

回答

3

我將建立一個角色名稱映射到的人誰填補這個角色數組的數組。也許是這樣的:

$roles = array(); 
for($i = 0; $i < $arrayrole1; $i++) { 
    $names = explode(", ", $arrayname[$i]); 
    $name = $names[1] . " " . $names[0]; 
    // append the name to the array of people filling the role 
    $roles[$arrayrole[$i]][] = $name; 
} 

// print out the list of people in each role 
foreach($roles as $rolename => $people) { 
    echo $rolename . ": " . implode(", ", $people) . "<br />"; 
} 
+0

感謝一堆,完美解決! –