Fileregels inlezen, in array zetten, ontdubbelen en dan bewerking uitvoeren op array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan te Pas

Jan te Pas

23/12/2017 14:34:27
Quote Anchor link
Ik ben aan het hannesen om een van een textfile de regels in te lezen en in een array te zetten. Dan wil ik dubbelen eruit wissen. Vervolgens wil ik vanaf de eerste array tot en met de laatste opgeschoonde array een bewerking uitvoeren,

Stel dat het bestand per regel een naam heeft. Deze wil ik dan allemaal inlezen, ontdubbelen en daarna bij de overgebleven regels een boodschap toevoegen en weer opslaan in een bestand.

Graag jullie helprichting.... dank!
 
PHP hulp

PHP hulp

28/03/2024 16:10:19
 
Adoptive Solution

Adoptive Solution

23/12/2017 14:54:50
Quote Anchor link
Hier kan je lezen hoe je een tekstbestand in een array inleest.

http://php.net/manual/en/function.file.php

Je kan dan vervolgens de array sorteren en dan de dubbele regels eruit halen.

Ongeveer zoals dit :

http://adoptive.esy.es/tags/

Met hier de code als text :

http://adoptive.esy.es/tags/tags.txt
 
Rob Doemaarwat

Rob Doemaarwat

23/12/2017 15:08:49
Quote Anchor link
ontdubbelen: array_unique()
sorteren: sort() (of zie alle varianten op http://php.net/manual/en/array.sorting.php )
 
Jan te Pas

Jan te Pas

23/12/2017 20:19:41
Quote Anchor link
Dank, ik ga stoeien met jullie tips!
 
Thomas van den Heuvel

Thomas van den Heuvel

23/12/2017 20:46:10
Quote Anchor link
Wat staat er in de bestanden opgeslagen? En waarom in bestanden.

Nadat is vastgesteld dat je het goede gereedschap voor de klus hebt gekozen kunnen we het over de klus zelf hebben.

Dus, wat probeer je op deze manier op te lossen?
 
Jan te Pas

Jan te Pas

23/12/2017 22:19:08
Quote Anchor link
In een lijst, een txt-bestand, staan allemaal achternamen onder elkaar, elk op een nieuwe regel. En die lijst wil ik inlezen, ontdubbelen en weer opnieuw als txt-bestand wegschrijven. Dat probeer ik op te lossen.

Toevoeging op 24/12/2017 12:14:32:

Ik heb nu de volgende code gemaakt. Ik kan dit testen, maar wil graag horen of dit de goede richting is.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

<?php
if ($_SERVER['REQUEST_METHOD']=="POST") {
   $ontdubbelen=$_POST['ontdubbel'];
  
   if ($ontdubbelen=="JA") {
        echo '<center>Ontdubbelen is gestart, momentje...';

    $lijst="Adressenlijst.txt";
    $lines = file($lijst);
    $result = array_unique($lines);
    file_put_contents($lijst, var_export($result, true));

    echo '<br><center><b>De lijst is ontdubbeld.</b><center><br>';
    echo '<p align="center"><button onclick="self.close()">Sluit dit venster</button>&nbsp;&nbsp;&nbsp';
    die();
    }
else {
           echo '<br><center>Er is iets misgegaan. Bewerking gestopt!</center><br>';
           echo '<p align="center"><button onclick="self.close()">Sluit dit venster</button>&nbsp;&nbsp;&nbsp';
           die();
     }
}

?>

<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title> ontdubbelen.</title>
<meta name="language" content="nl" />  
<meta name="description" content="" />  
<meta name="keywords" content="" />
<style type="text/css">

table {
    width:70%;
    -moz-box-shadow: 10px 10px 5px #888;
    -webkit-box-shadow: 10px 10px 5px #888;
    box-shadow: 10px 10px 5px #888;
    background-color:#efefef;
    border-radius:8px;
}

. btn
 {
  background: #FFFFFF;
  border: 1px solid #000;
  font-size: 10pt;
  color: #416cd2;
  border:1px solid #000000;
  border-radius: 12px;
  padding-left:5px;
  padding-right:5px;
  width:100%;
}
.btn:hover
 {
  background: green;
  border: 1px solid #000;
  font-size: 10pt;
  color: white;
  border:1px solid #000000;
  border-radius: 12px;
}

a {
        text-decoration:none;
        color: #0099FF;
}

a:hover {
        text-decoration:none;
        color: #000000;
}

button
 {
    width: 30%;
    background-color: red;
    color: white;
    padding: 5px 5px;
    margin: 8px 0;
    border: 1px solid #000000;
    border-radius: 12px;
    cursor: pointer;

}
</style>
<body>
<table align="center" class="table" widtg="70%">
<tr><td>
<form method="post" enctype="multipart/form-data" name="opschonen" onkeypress="return event.keyCode != 13;">
<center>U kunt een lijst met achternamen opschonen.<br><br>
<label>Wilt u de lijst ontdubbelen?</label>    
<select name="ontdubbel" >
<option value="JA" selected>&nbsp;JA</option>
<option value="NEE" >&nbsp;NEE</option>
</select>
<input type="submit" name="confirm" value="Ga door"><br/>
</form>
<br><br>
<p align="center"><button onclick="self.close()">Sluit dit venster</button>
</td></tr>
</table>
</center>
</body>
</html>


Toevoeging op 24/12/2017 13:43:51:

Bovengenoemde actie werkt. Alles wordt ontdubbeld, echter er staat n meer in de Adressenlijst dan ik wil. Wie weet hier raad me?

Uitvoer Adressenlijst.txt na de routine doorlopen te hebben
array (
0 => 'een
',
1 => 'twee
',
2 => 'drie
',
3 => 'vier
',
4 => 'vijf
',
15 => 'jan
',
16 => 'piet
',
17 => 'klaas
',
18 => 'Jan
',
19 => 'Piet
',
20 => 'Klaas',
)

Toevoeging op 24/12/2017 13:45:22:

Jan te Pas op 23/12/2017 22:19:08:
In een lijst, een txt-bestand, staan allemaal achternamen onder elkaar, elk op een nieuwe regel. En die lijst wil ik inlezen, ontdubbelen en weer opnieuw als txt-bestand wegschrijven. Dat probeer ik op te lossen.

Toevoeging op 24/12/2017 12:14:32:

Ik heb nu de volgende code gemaakt. Ik kan dit testen, maar wil graag horen of dit de goede richting is.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

<?php
if ($_SERVER['REQUEST_METHOD']=="POST") {
   $ontdubbelen=$_POST['ontdubbel'];
  
   if ($ontdubbelen=="JA") {
        echo '<center>Ontdubbelen is gestart, momentje...';

    $lijst="Adressenlijst.txt";
    $lines = file($lijst);
    $result = array_unique($lines);
    file_put_contents($lijst, var_export($result, true));

    echo '<br><center><b>De lijst is ontdubbeld.</b><center><br>';
    echo '<p align="center"><button onclick="self.close()">Sluit dit venster</button>&nbsp;&nbsp;&nbsp';
    die();
    }
else {
           echo '<br><center>Er is iets misgegaan. Bewerking gestopt!</center><br>';
           echo '<p align="center"><button onclick="self.close()">Sluit dit venster</button>&nbsp;&nbsp;&nbsp';
           die();
     }
}

?>

<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title> ontdubbelen.</title>
<meta name="language" content="nl" />  
<meta name="description" content="" />  
<meta name="keywords" content="" />
<style type="text/css">

table {
    width:70%;
    -moz-box-shadow: 10px 10px 5px #888;
    -webkit-box-shadow: 10px 10px 5px #888;
    box-shadow: 10px 10px 5px #888;
    background-color:#efefef;
    border-radius:8px;
}

. btn
 {
  background: #FFFFFF;
  border: 1px solid #000;
  font-size: 10pt;
  color: #416cd2;
  border:1px solid #000000;
  border-radius: 12px;
  padding-left:5px;
  padding-right:5px;
  width:100%;
}
.btn:hover
 {
  background: green;
  border: 1px solid #000;
  font-size: 10pt;
  color: white;
  border:1px solid #000000;
  border-radius: 12px;
}

a {
        text-decoration:none;
        color: #0099FF;
}

a:hover {
        text-decoration:none;
        color: #000000;
}

button
 {
    width: 30%;
    background-color: red;
    color: white;
    padding: 5px 5px;
    margin: 8px 0;
    border: 1px solid #000000;
    border-radius: 12px;
    cursor: pointer;

}
</style>
<body>
<table align="center" class="table" widtg="70%">
<tr><td>
<form method="post" enctype="multipart/form-data" name="opschonen" onkeypress="return event.keyCode != 13;">
<center>U kunt een lijst met achternamen opschonen.<br><br>
<label>Wilt u de lijst ontdubbelen?</label>    
<select name="ontdubbel" >
<option value="JA" selected>&nbsp;JA</option>
<option value="NEE" >&nbsp;NEE</option>
</select>
<input type="submit" name="confirm" value="Ga door"><br/>
</form>
<br><br>
<p align="center"><button onclick="self.close()">Sluit dit venster</button>
</td></tr>
</table>
</center>
</body>
</html>


Toevoeging op 24/12/2017 13:43:51:

Bovengenoemde actie werkt. Alles wordt ontdubbeld, echter er staan meer in de Adressenlijst dan ik wil. Wie weet hier raad mee?

Uitvoer Adressenlijst.txt na de routine doorlopen te hebben
array (
0 => 'een
',
1 => 'twee
',
2 => 'drie
',
3 => 'vier
',
4 => 'vijf
',
15 => 'jan
',
16 => 'piet
',
17 => 'klaas
',
18 => 'Jan
',
19 => 'Piet
',
20 => 'Klaas',
)




Toevoeging op 24/12/2017 14:18:00:

OPGELOST! Dank voor de hints en aanwijzingen. De code, nu ook met sorteren, naar undercast converteren en ‘nette uitvoer’.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

<?php
if ($_SERVER['REQUEST_METHOD']=="POST") {
   $ontdubbelen=$_POST['ontdubbel'];
  
   if ($ontdubbelen=="JA") {
        echo '<center>Ontdubbelen is gestart, momentje...';

    $lijst="Adressenlijst.txt";
    $lines = file($lijst);
    $result = array_map('strtolower',$lines);
    $result = array_unique($result);
    sort($result);
    file_put_contents($lijst, $result);

    echo '<br><center><b>De lijst is ontdubbeld.</b><center><br>';
    echo '<p align="center"><button onclick="self.close()">Sluit dit venster</button>&nbsp;&nbsp;&nbsp';
    die();
    }
else {
           echo '<br><center>Er is iets misgegaan. Bewerking gestopt!</center><br>';
           echo '<p align="center"><button onclick="self.close()">Sluit dit venster</button>&nbsp;&nbsp;&nbsp';
           die();
     }
}

?>

<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title> ontdubbelen.</title>
<meta name="language" content="nl" />  
<meta name="description" content="" />  
<meta name="keywords" content="" />
<style type="text/css">

table {
    width:70%;
    -moz-box-shadow: 10px 10px 5px #888;
    -webkit-box-shadow: 10px 10px 5px #888;
    box-shadow: 10px 10px 5px #888;
    background-color:#efefef;
    border-radius:8px;
}

. btn
 {
  background: #FFFFFF;
  border: 1px solid #000;
  font-size: 10pt;
  color: #416cd2;
  border:1px solid #000000;
  border-radius: 12px;
  padding-left:5px;
  padding-right:5px;
  width:100%;
}
.btn:hover
 {
  background: green;
  border: 1px solid #000;
  font-size: 10pt;
  color: white;
  border:1px solid #000000;
  border-radius: 12px;
}

a {
        text-decoration:none;
        color: #0099FF;
}

a:hover {
        text-decoration:none;
        color: #000000;
}

button
 {
    width: 30%;
    background-color: red;
    color: white;
    padding: 5px 5px;
    margin: 8px 0;
    border: 1px solid #000000;
    border-radius: 12px;
    cursor: pointer;

}
</style>
<body>
<table align="center" class="table" widtg="70%">
<tr><td>
<form method="post" enctype="multipart/form-data" name="opschonen" onkeypress="return event.keyCode != 13;">
<center>U kunt een lijst met achternamen opschonen.<br><br>
<label>Wilt u de lijst ontdubbelen?</label>    
<select name="ontdubbel" >
<option value="JA" selected>&nbsp;JA</option>
<option value="NEE" >&nbsp;NEE</option>
</select>
<input type="submit" name="confirm" value="Ga door"><br/>
</form>
<br><br>
<p align="center"><button onclick="self.close()">Sluit dit venster</button>
</td></tr>
</table>
</center>
</body>
</html>
 
Thomas van den Heuvel

Thomas van den Heuvel

25/12/2017 00:38:43
Quote Anchor link
Misschien wordt het eens tijds om je in databases te verdiepen (of in ieder geval een gestructureerdere opslag)? Je bent redelijk vaak bezig met -of in ieder geval een poging aan het doen tot iets wat sterk lijkt op- het gestructureerd omgaan met data. Daarvoor zijn databases (of zekere bestandsformaten) bij uitstek geschikt.

Het bovenstaande is toch zoiets als een auto bergopwaarts duwen, je kunt er ook in rijden? Om ervoor te zorgen dat data integer blijft zou je beperkingen (constraints) kunnen opleggen aan kolommen of gewoon kunnen controleren wanneer je een achternaam toevoegt of verandert of deze reeds bestaat.

Vraag ik mij ook nog steeds af waar dit voor bedoeld is? Achternamen zijn niet per definitie uniek, dus om hier nu een soort van unieke entiteit van te maken is uit (database)technisch perspectief ook een beetje raar.
 
Jan te Pas

Jan te Pas

25/12/2017 10:29:54
Quote Anchor link
@Thomas, je hebt gelijk, mijn doel is om bij elk project mysql te gebruiken, maar dit is voor een persoon, en site waar geen database achterzit of kan zitten. Dus hannesen. Een beetje oud papierhulp. Dus kies ik voor simpeler methoden. En die zijn vaak best moeilijk. Dank!
 
Ben van Velzen

Ben van Velzen

25/12/2017 11:06:59
Quote Anchor link
Gebruik dan op zijn minst sqlite. Dat is overal beschikbaar.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.