#php #csv #parsing
Вопрос:
Я не уверен, как бы я добавил столбцы к информации, которая у меня есть в моем файле CSV. Три столбца, которые я хотел бы иметь, — это номер мобильного телефона, Название оператора и Статус действия.
index.php:
<?php
if (($open = fopen("Book1.csv", "r")) !== FALSE)
{
while (($data = fgetcsv($open, 1000, ",")) !== FALSE)
{
$array[] = $data;
}
fclose($open);
}
echo "<pre>";
//To display array data
var_dump($array);
echo "</pre>";
Моя информация в настоящее время отображается, как показано в следующем коде:
array(6) { [0]=> array(3) {
[0]=> string(11) "0744395****"
[1]=> string(9) " Vodafone"
[2]=> string(6) " Valid"
}
[1]=> array(3) {
[0]=> string(11) "0744395****"
[1]=> string(3) " EE"
[2]=> string(6) " Valid"
}
[2]=> array(3) {
[0]=> string(11) "0744395****"
[1]=> string(6) " Three"
[2]=> string(6) " Valid"
}
[3]=> array(3) {
[0]=> string(11) "0744395****"
[1]=> string(9) " Vodafone"
[2]=> string(6) " Valid"
}
[4]=> array(3) {
[0]=> string(11) "0744395****"
[1]=> string(13) " Tesco Mobile"
[2]=> string(10) " Not Valid"
}
[5]=> array(3) {
[0]=> string(11) "0744395****"
[1]=> string(3) " EE"
[2]=> string(6) " Valid"
}
}
Я хотел бы, чтобы информация была размещена в столбцах, как показано ниже (онлайн-пример, который я нашел).:
[REPTILE] => Array(
[0] => stdClass Object(
[animal] => crocodile
[type] => REPTILE
[number] => 4
)
)
[BIRD] => Array(
[0] => stdClass Object(
[animal] => duck
[type] => BIRD
[number] => 2
)
)
[MAMMAL] => Array (
[0] => stdClass Object(
[animal] => koala
[type] => MAMMAL
[number] => 4
)
[1] => stdClass Object(
[animal] => lion
[type] => MAMMAL
[number] => 5
)
)
[FISH] => Array
(
[0] => stdClass Object(
[animal] => áéíóú
[type] => FISH
[number] => 3
)
)
Вот как моя информация хранится в файле CSV:
0744395****, Vodafone, Valid
0744395****, EE, Valid
0744395****, Three, Valid
0744395****, Vodafone, Valid
0744395****, Tesco Mobile, Not Valid
0744395****, EE, Valid
Комментарии:
1. Отлично, но как вы собираетесь решить, какие
reptiles
из них илиbirds
илиfish
или …. И вообще, когда мобильные телефоны так классифицировались??? PHP, как и все другие языки программирования, не дотягивает до правильной магии, ИЛИ это я неправильно понял здесь2. О, я понимаю, это был просто плохой пример. Если вы хотите, чтобы мы поняли ваши требования, потратьте немного времени на отображение массива «ЧТО я ХОЧУ» , используя данные из массива «С ЧЕГО я НАЧАЛ» , и, возможно, все это будет иметь смысл
3. Животное, тип и номер-это та часть, которую я надеюсь получить аналогично для номера мобильного телефона, имени оператора и статуса действия. Я просто использовал этот онлайн-код в качестве примера того, как я хотел бы, чтобы мой код был структурирован.
4. Моя вина. Может быть, это было написано или объяснено не так хорошо, как я надеялся.
5. Вы хотите сгруппировать записи для каждого оператора мобильной связи? Как уже отмечалось @Riggs, пожалуйста, отредактируйте вопрос, чтобы показать массив «ЧТО я ХОЧУ», используя данные из массива «С ЧЕГО я НАЧАЛ».
Ответ №1:
$newArray = [];
if (($fh = fopen("Book1.csv", "r")) !== FALSE) {
while (($data = fgetcsv($fh, 1000, ",")) !== FALSE) {
$o = new stdClass;
$o->MobileNumber = trim($data[0]);
$o->Carrier = trim($data[1]);
$o->ValidityStatus = trim($data[2]);
$newArray[$o->Carrier][] = $o;
}
}
Следует создать массив носителей, каждый из которых содержит массив объектов с номером телефона и статусами внутри
Комментарии:
1. Это в основном то, что предлагает ваш пример «ЧЕГО я ХОЧУ», так что вы имели в виду
2. Путь в онлайн-примере имеет [животное] => коала [тип] = > МЛЕКОПИТАЮЩЕЕ [номер] =>>> 4 Мне нужен [Номер мобильного телефона] =>>>> 07738****** [Перевозчик] = > > > > > > EE [Статус действия] = > > > > > Действителен. Мне нужно, чтобы это отображалось в этой структуре для каждого вывода данных
3. Да, это вы получите из этого кода, но все номера EE будут находиться в массиве под названием EE, как у вашего
FISH
и т. Д4. массив(1) { [«0744395****»]=> массив(6) { [0]=>> объект(stdClass)#1 (3) { [«носитель»]=>>> строка(11) «0744395****» [«телефон»]=>>>> строка(9) «Vodafone» [«статус»]=>>>>> строка(6) «Действительна» } [1]=>>>>>> объект(класс STD)#2 (3) { [«носитель»]=>>>>>>> строка(11) «0744395****» [«телефон»]=>>>>>>>> строка(3) «EE» [«статус»]=>>>>>>>>> строка(6) «Действительна» }
5. О, ради всего святого, тогда переместите детали, ВСЕ, что я сделал, это неправильно определил порядок полей в csv