array_diff hulp nodig
Hey ik ben bezig met een script waarbij mappen automatisch worden opgezocht en deze worden dan in een database gezet. met scandir maak ik een array voor de mappen en een andere array komt van een database tabel. Aan de hand van de informatie uit mijn database en de array van mijn mappen wil ik kijken of een map al bestaat of niet:
Ik krijg het niet voor elkaar om de array's zodanig te strippen dat de waardes uit de beide array's met elkaar vergeleken kunnen worden. Het is dus de bedoeling dat Het script moet kunnen zien of een bestand al bestaat of juist nog toegevoegt moet worden aan de database.
Alvast bedankt voor de hulp
Code (php)
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
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
<?php
$sql = "SELECT * FROM core_modules";
if(!$Smodules = $mysqli->query($sql))
{
trigger_error('Fout in query: '.$mysqli->error);
}
else
{
$ModulesInDB = array();
while($module = $Smodules->fetch_assoc())
{
array_push($ModulesInDB, $module);
}
}
$array_modules = array();
$modules = scandir("modules");
$i = 0;
foreach($modules AS $scankey => $scanvalue)
{
if(($scanvalue != ".") && ($scanvalue != ".."))
{
if(!is_dir($scanvalue))
{
$array_modules[$i] = $scanvalue ;
$i++;
}
}
}
$i = 0;
$result = array();
foreach($ModulesInDB AS $DBkey => $DBvalue)
{
$result[$i] = array_diff($array_modules, $DBvalue);
$i++;
}
foreach($result AS $key => $value)
{
echo $value;
}
?>
$sql = "SELECT * FROM core_modules";
if(!$Smodules = $mysqli->query($sql))
{
trigger_error('Fout in query: '.$mysqli->error);
}
else
{
$ModulesInDB = array();
while($module = $Smodules->fetch_assoc())
{
array_push($ModulesInDB, $module);
}
}
$array_modules = array();
$modules = scandir("modules");
$i = 0;
foreach($modules AS $scankey => $scanvalue)
{
if(($scanvalue != ".") && ($scanvalue != ".."))
{
if(!is_dir($scanvalue))
{
$array_modules[$i] = $scanvalue ;
$i++;
}
}
}
$i = 0;
$result = array();
foreach($ModulesInDB AS $DBkey => $DBvalue)
{
$result[$i] = array_diff($array_modules, $DBvalue);
$i++;
}
foreach($result AS $key => $value)
{
echo $value;
}
?>
Ik krijg het niet voor elkaar om de array's zodanig te strippen dat de waardes uit de beide array's met elkaar vergeleken kunnen worden. Het is dus de bedoeling dat Het script moet kunnen zien of een bestand al bestaat of juist nog toegevoegt moet worden aan de database.
Alvast bedankt voor de hulp
Gesponsorde koppelingen:
Effe iets anders: je zet in $array_modules alles wat géén map is?
Voer voor je eennalaatste foreach eens dit uit:
Kijken wat daar uit komt.
Voer voor je eennalaatste foreach eens dit uit:
Kijken wat daar uit komt.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
Situatie tijdens uitvoeren:
-2 mappen geindexeerd in database
-modulemappen in modulemap
na uitvoering krijg ik dit:
array(2) { [0]=> array(5) { ["ModuleID"]=> string(2) "12" ["ModuleMap"]=> string(4) "home" ["CustomName"]=> string(4) "home" ["Active"]=> string(0) "" ["View"]=> string(0) "" } [1]=> array(5) { ["ModuleID"]=> string(2) "13" ["ModuleMap"]=> string(7) "members" ["CustomName"]=> string(7) "members" ["Active"]=> string(0) "" ["View"]=> string(0) "" } } NULL ArrayArray
-2 mappen geindexeerd in database
-modulemappen in modulemap
na uitvoering krijg ik dit:
array(2) { [0]=> array(5) { ["ModuleID"]=> string(2) "12" ["ModuleMap"]=> string(4) "home" ["CustomName"]=> string(4) "home" ["Active"]=> string(0) "" ["View"]=> string(0) "" } [1]=> array(5) { ["ModuleID"]=> string(2) "13" ["ModuleMap"]=> string(7) "members" ["CustomName"]=> string(7) "members" ["Active"]=> string(0) "" ["View"]=> string(0) "" } } NULL ArrayArray
@Chris
Als ik het goed begrijp heb jij 2 arrays:
1. Met mappen die op je server staan (incl. nieuw toegevoegde)
2. Met mappen die reeds in je database zijn opgeslagen
-> Je kan met 1 foreach dan zorgen dat de mappen uit array 1 toegevoegd worden:
array1 zijn de mappen die je inleest, en array2 zijn de gegevens die je uit je database in een array zet.
Als ik het goed begrijp heb jij 2 arrays:
1. Met mappen die op je server staan (incl. nieuw toegevoegde)
2. Met mappen die reeds in je database zijn opgeslagen
-> Je kan met 1 foreach dan zorgen dat de mappen uit array 1 toegevoegd worden:
Code (php)
array1 zijn de mappen die je inleest, en array2 zijn de gegevens die je uit je database in een array zet.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Ja dat is wat ik ook geprobeerd heb. Als ik de onderstaande code gebruik krijg ik: array( ) te zien.
Omdat de bovenstaande code (volgens mij) zegt dat $ModulesInDB een multidimensionale array is ( array[array[]] ) probeerde ik het volgende:
Hierbij heb ik een key aangegeven in de $ModulesInDB array, maar dan geeft hij een foutmelding welke ik op dit moment niet kan sturen omdat ik op een andere pc zit. Ik zal de foutmelding over 2 uur wel even opsturen.
Code (php)
Omdat de bovenstaande code (volgens mij) zegt dat $ModulesInDB een multidimensionale array is ( array[array[]] ) probeerde ik het volgende:
Code (php)
Hierbij heb ik een key aangegeven in de $ModulesInDB array, maar dan geeft hij een foutmelding welke ik op dit moment niet kan sturen omdat ik op een andere pc zit. Ik zal de foutmelding over 2 uur wel even opsturen.
Gewijzigd op 01/01/1970 01:00:00 door chris visser



