나는 세 개의 텍스트 파일로 작업하고 .......PHP에서 다차원 배열을 사용하여 루프에서 str_replace()를 사용하는 방법은 무엇입니까?
space.txt
Kournikova Anna F F 6-3-1975 Red
Hingis Martina M F 4-2-1979 Green
Seles Monica H F 12-2-1973 Black
comma.txt
Abercrombie, Neil, Male, Tan, 2/13/1943
Bishop, Timothy, Male, Yellow, 4/23/1967
Kelly, Sue, Female, Pink, 7/12/1959
pipe.txt
Smith | Steve | D | M | Red | 3-3-1985
Bonk | Radek | S | M | Green | 6-3-1975
Bouillon | Francis | G | M | Blue | 6-3-1975
지금까지 저는 그것들을 모두 하나의 배열로 파싱했습니다. 다음 출력은 내가 남성에 대한 여성, M의에 성별에 모두 F를 교체해야이 ......
Last_name, First_name, Middle_Initial, Gender, DOB, Fav_color
Kournikova Anna F F 6-3-1975 Red
Hingis Martina M F 4-2-1979 Green
Seles Monica H F 12-2-1973 Black
Abercrombie Neil Male Tan 2/13/1943
Bishop Timothy Male Yellow 4/23/1967
Kelly Sue Female Pink 7/12/1959
Smith Steve D M Red 3-3-1985
Bonk Radek S M Green 6-3-1975
Bouillon Francis G M Blue 6-3-1975
이며, DOB 형식은 "/"이어야합니다. 여기
내가 정보를 구문 분석하는 데 사용되는 다음과 같은 코드 :<?php
$space_txt = './data/input/space.txt';
$comma_txt = './data/input/comma.txt';
$pipe_txt = './data/input/pipe.txt';
$parsed_space_data = file_get_contents($space_txt);
$parsed_comma_data = file_get_contents($comma_txt);
$parsed_pipe_data = file_get_contents($pipe_txt);
$space_array = myExpldeLoopFunc('space', ' ', $parsed_space_data);
$comma_array = myExpldeLoopFunc('comma', ',', $parsed_comma_data);
$pipe_array = myExpldeLoopFunc('pipe', ' | ', $parsed_pipe_data);
$finalArray = array_merge($space_array, $comma_array, $pipe_array);
function myExpldeLoopFunc($name, $sep, $data)
{
$parsedData = explode("\r", $data);
$arr = [];
foreach ($parsedData as $data) {
$data_arr = explode($sep, $data);
if ($name == 'space') {
$arr[] = [
'last_name' => $data_arr[0],
'first_name' => $data_arr[1],
'middle_initial' => $data_arr[2],
'gender' => $data_arr[3],
'date_of_birth' => $data_arr[4],
'favorite_color' => $data_arr[5],
];
if ($data_arr[3] == 'F') {
return str_replace('F', 'Female', $arr);
} elseif ($name == 'comma') {
$arr[] = [
'last_name' => $data_arr[0],
'first_name' => $data_arr[1],
'gender' => $data_arr[2],
'date_of_birth' => $data_arr[3],
'favorite_color' => $data_arr[4],
];
} elseif ($name == 'pipe') {
$arr[] = [
'last_name' => $data_arr[0],
'first_name' => $data_arr[1],
'middle_initial' => $data_arr[2],
'gender' => $data_arr[3],
'favorite_color' => $data_arr[4],
'date_of_birth' => $data_arr[5],
];
}
}
return $arr;
}
}
다음 결과 삭제 '힝기스 마르티나 MF 1979년 4월 2일 녹색'과 '셀레스 모니카 HF 1973년 12월 2일 블랙' . 그 (것)들을 전부 대체하는 제일 해결책은 무엇 일 것입니까?
최종 예상 배열을 어떻게 표시해야합니까? – RomanPerekhrest
3 개의 파일 모두에서 작은 샘플을 포함하도록 질문을 업데이트 할 수 있습니까? 각각의 두 줄은 위대 할 것입니다. –
if (data_arr [3] == 'F') {'는'if ($ data_arr [3] == 'F') {'여야합니다. – cb0