Я работаю с тремя текстовыми файлами .......Как использовать str_replace() в цикле с многомерными массивами в PHP?
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
и до сих пор мне удалось разобрать их все в один массив. Следующий вывод это ......
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
Я должен заменить все F в области гендерных самка, M, Мале, а формат 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;
}
}
Следующий результат удаляющий «Хингис Martina MF 4-2-1979 Green» и «Селеш Моника HF 12-2-1973 Black» , Что было бы лучшим решением для их замены?
Вы можете показать, как должен выглядеть окончательный ожидаемый массив? – RomanPerekhrest
Можете ли вы обновить свой вопрос, чтобы включить небольшой образец из всех трех файлов? пара строк из каждого будет великолепна. –
Вам не хватает '$' в строке 44 'if (data_arr [3] == 'F') {' должно быть 'if ($ data_arr [3] == 'F') {'. – cb0