나는 바보 같은 짓을 한 것처럼 보였지만 나무가 보이지 않습니다.코드 만 처리하는 마지막 레코드
아래의 코드는 배열을 따라 가며 배열 요소 그룹을 문자열로 나눕니다. 이 배열을 15 번 반복하고 출력 문자열을 연결해야합니다. 출력 문자열에서 이전 레코드가 아닌 마지막 레코드의 데이터 만 사용합니다.
모든 의견을 환영합니다. 당신은 조금 일찍 for
문을 종료하는
//Now get the data for each individual
for ($i=$ind[0];$i<$ind[14];$i++){
//echo $persons[$i]."<br>";
//get the id
if (strpos($persons[$i],"0 @")!==false){
//if (strpos($record,"0 @I")!==false){
$s = explode("@",$persons[$i]);
for($k=1;$k<=count($s)-1;$k+=2){
$data .= $s[$k]." ";
$rec_id = "P ".$s[$k]."=";
}
}
//get name
if (strpos($persons[$i],"1 NAME")!==false){
$n = str_replace('/','',$persons[$i]);
$n = str_replace('1 NAME ','',$n);
$data .= $n." ";
$nt = $n;
$pname = $n;
//continue;
}
//Get Sex
if (strpos($persons[$i],"1 SEX")!==false){
$n = str_replace('1 SEX ','',$persons[$i]);
$data .= $n." ";
$sx = trim(strtolower($n));//."(".$row.",2):";
$row++;
}
//Get Birth
if (strpos($persons[$i],"1 BIRT")!==false){
$bf = "y";//Has a birth fact
}
if ((strpos($persons[$i],"2 DATE")!==false) && $bf =="y"){
$n = str_replace('2 DATE ','',$persons[$i]);
$gotdate = "y";
$data .= "B: ".$n." ";
$b_date = "- B:".trim($n)." in ";
}
if (((strpos($persons[$i],"2 PLAC")!==false) && $bf =="y") && $gotdate =="y"){
$n = str_replace('2 PLAC ', '', $persons[$i]);
$data .= $n;
$b_place = $n;
if (empty($b_place)){$b_place =" ";};
$bf = "n";
}
//Get Death
if (strpos($persons[$i],"1 DEAT")!==false){
$df = "y";//Has a death fact
}
if ((strpos($persons[$i],"2 DATE")!==false) && $df =="y"){
$n = str_replace('2 DATE ','',$persons[$i]);
$data .= "D: ".$n." ";
if (empty($n)){$n=" ";};
$d_date = "- D:".trim($n)." in ";
}
if ((strpos($persons[$i],"2 PLAC")!==false) && $df =="y") {
$n = str_replace('2 PLAC ', '', $persons[$i]);
$data .= $n . " <BR>";
if (empty($n)){$n=" ";};
$d_place = $n;
$df = "n";
}
}
if (empty($d_date)){$d_date=" ";};
if (empty($d_place)){$d_place=" ";};
//Now construct note field
$p_note ="= ".trim($pname)." was born ".substr($b_date,4).trim($b_place);
if (($d_date)!==" "){$p_note .=" and died ".substr($d_date,4).$d_place;}
//now write this record to string
$opf .= $rec_id.$sx."(".$row.",2):".$pname."\r\n".$b_date.$b_place."\r\n".$d_date.$d_place."\r\n".$p_note;
미안하지만 작동하지 않습니다. 이미 시도했습니다. 내가 거기로 이동하면 각 개인에 대한 데이터가 정의되지 않은 변수 오류의로드와 함께 해당 개인에 대한 배열의 행 수와 동일하게됩니다. – Colin
$ 데이터가 반복되는 것을 의미하면 각 루프의 시작 부분에'$ data = '';를 설정하면 각 사람에 대해 반복되는 데이터가 중지됩니다. –
$ 데이터 변수는 테스트를위한 것입니다. $ opf는 출력 문자열입니다. – Colin