Associatieve Arrays koppelen
Ik gebruik 2 arrays:
Deze moeten gekoppeld worden.
Bij afbeelding 1 hoort youtube van 1, enz.
De uitdraai gaat als volgt:
Iemand die me op weg kan helpen?
Mag ook wel andere manier zijn om de arrays te koppelen.
Code (php)
1
2
3
4
5
2
3
4
5
// Initialize the gallery array
$galleryArray = $gallery->readImageDirectory('gallery-images');
// Initialize the youtube array
$youtubeArray = $gallery->readImageDirectory('youtube-images'); //dit kan wel anders moeten...
$galleryArray = $gallery->readImageDirectory('gallery-images');
// Initialize the youtube array
$youtubeArray = $gallery->readImageDirectory('youtube-images'); //dit kan wel anders moeten...
Deze moeten gekoppeld worden.
Bij afbeelding 1 hoort youtube van 1, enz.
De uitdraai gaat als volgt:
Code (php)
Iemand die me op weg kan helpen?
Mag ook wel andere manier zijn om de arrays te koppelen.
Gewijzigd op 30/06/2017 21:42:02 door Hans De Ridder
*kras kras kras*
zie antwoord hieronder
zie antwoord hieronder
Gewijzigd op 02/07/2017 17:28:49 door Dennis WhoCares
of gewoon de foreach uitschrijven als foreach ($galleryArray['images'] as $index => $image) waarna je $index kunt gebruiken om gegevens uit $youtubeArray te halen. Is ook wat betrouwbaarder.
Bedankt voor jullie reactie..
Kunnen jullie een voorbeeld geven?
Want de gegevens komen uit twee mappen.
Dus moet ook gekoppeld worden op juiste gegevens bij elkaar.
Maar die kenmerken kan ik ook in de bestandsnaam verwerken.
Ik ben toch aan het experimenteren.
Ik dacht er aan om alles in 1 map te stoppen. (Zijn hele kleine bestanden).
En met kenmerk in de bestandsnaam er voor zorgen dat ze na elkaar in array komen.
En dan moet de teller telkens met 2 omhoog.
Dus in de array:
0 - youtube 1
1 - foto 1
2 - youtube 2
3 - foto 2
4 - youtube 3
5 - foto 3
Kunnen jullie een voorbeeld geven?
Want de gegevens komen uit twee mappen.
Dus moet ook gekoppeld worden op juiste gegevens bij elkaar.
Maar die kenmerken kan ik ook in de bestandsnaam verwerken.
Ik ben toch aan het experimenteren.
Ik dacht er aan om alles in 1 map te stoppen. (Zijn hele kleine bestanden).
En met kenmerk in de bestandsnaam er voor zorgen dat ze na elkaar in array komen.
En dan moet de teller telkens met 2 omhoog.
Dus in de array:
0 - youtube 1
1 - foto 1
2 - youtube 2
3 - foto 2
4 - youtube 3
5 - foto 3
Gewijzigd op 30/06/2017 23:33:59 door Hans De Ridder
Of je maakt een tabelletje in een database waarin je informatie over bestandsnamen bijhoudt als een soort van kapstok? Dan maakt het niet uit hoe de bestanden heten, of waar ze staan.
Ik ben wat aan het experimenteren.
Juist om een soort database te maken zonder echte database.
Ik gebruik een open source fotoboek voor de weergave in foto's.
En bij clicken gebeurt er dan van alles. En soms moet ik bepaalde foto's koppelen.
Juist om een soort database te maken zonder echte database.
Ik gebruik een open source fotoboek voor de weergave in foto's.
En bij clicken gebeurt er dan van alles. En soms moet ik bepaalde foto's koppelen.
In het geval van een array in die vorm zou ik iets doen als volgt:
Je zou, als je zeker weet dat de loop altijd hetzelfde verloopt ook iets eenvoudigers kunnen doen:
Code (php)
Je zou, als je zeker weet dat de loop altijd hetzelfde verloopt ook iets eenvoudigers kunnen doen:
Code (php)
Gewijzigd op 01/07/2017 01:23:26 door Ben van Velzen
Bedankt voor het voorbeeld.
Zaterdag kom ik er niet aan toe.
Zal het morgen inbouwen en testen.
Zaterdag kom ik er niet aan toe.
Zal het morgen inbouwen en testen.
Gewijzigd op 01/07/2017 11:24:53 door Hans De Ridder
Ik heb het een en ander geprobeerd.
De teller ziet het aantal bestanden wel.
Maar er verschijnt niets tussen de haakjes om in de readers te plaatsen.
De layout neemt ook maar weinig over van de CSS.
ik heb nu ongeveer staan...
De teller ziet het aantal bestanden wel.
Maar er verschijnt niets tussen de haakjes om in de readers te plaatsen.
De layout neemt ook maar weinig over van de CSS.
ik heb nu ongeveer staan...
Code (php)
Hi Hans,
we weten niet hoe de array $galleryArray eruit ziet.
Maar als de array vol zit met arrays zonder een 'string' als key:
zet ['file_title'] eens achter [$i] of wat voor waarde je ook nodig heb
we weten niet hoe de array $galleryArray eruit ziet.
Maar als de array vol zit met arrays zonder een 'string' als key:
zet ['file_title'] eens achter [$i] of wat voor waarde je ook nodig heb
Code (php)
1
2
3
4
2
3
4
<?php for ($i = 0; $i < count($galleryArray['images']); $i += 2) { ?>
<li><a href="#" class="tooltip" onclick="youtubereader('<?php echo $galleryArray['images'][$i]['file_title']; ?>')">tekst</a><div id="special" onclick="youtubereader('<?php echo $galleryArray['images'][$i+1]['file_title']; ?>')"></div>
</li>
<?php } ?>
<li><a href="#" class="tooltip" onclick="youtubereader('<?php echo $galleryArray['images'][$i]['file_title']; ?>')">tekst</a><div id="special" onclick="youtubereader('<?php echo $galleryArray['images'][$i+1]['file_title']; ?>')"></div>
</li>
<?php } ?>
Gewijzigd op 02/07/2017 22:10:52 door Dennis WhoCares
Bedankt voor je reactie.
Dat werkt (nog) niet.
Ik kom in de PHP het volgende tegen:
['file_title']
['thumb_path']
Had inderdaad jouw oplossing ook al geprobeerd, zowel voor als achter de $i.
Zonder resultaat.
Het mogen ook best 2 verschillende arrays zijn.
Als ik die maar bij de uitdraai kan gebruiken.
Dat werkt (nog) niet.
Ik kom in de PHP het volgende tegen:
['file_title']
['thumb_path']
Had inderdaad jouw oplossing ook al geprobeerd, zowel voor als achter de $i.
Zonder resultaat.
Het mogen ook best 2 verschillende arrays zijn.
Als ik die maar bij de uitdraai kan gebruiken.
Goede morgen Hans,
zou je eens een print_r() kunnen geven van beide arrays?
wellicht kunnen we je hier dan iets beter helpen :)
zou je eens een print_r() kunnen geven van beide arrays?
wellicht kunnen we je hier dan iets beter helpen :)
Gewijzigd op 03/07/2017 08:20:59 door Dennis WhoCares
Ik heb de gegevens van de print_r($galleryArray) hieronder.
De print_r($youtubeArray) komt nog..
De uitlezing blijft helaas nog leeg...
De print_r($youtubeArray) komt nog..
De uitlezing blijft helaas nog leeg...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Array
(
[images] => Array
(
[zOATXRLfW2c.jpg] => Array
(
[file_title] => zOATXRLfW2c
[file_path] => javascript:void(0)" onclick ="googlereader('gallery-images/zOATXRLfW2c.jpg')
[thumb_path] => resources/cache/160x61-75-01e2e8e31007cdadd3a39d779e374326e83e55f3bf1047462e1cccc7cb0ed3cf.jpg
)
[xqJr5PXvbDI.jpg] => Array
(
[file_title] => xqJr5PXvbDI
[file_path] => javascript:void(0)" onclick ="googlereader('gallery-images/xqJr5PXvbDI.jpg')
[thumb_path] => resources/cache/160x61-75-8e3b37dd15213aed877d3b0b3dcad52c79245698b3f85ce331d8c102fcb7ff6b.jpg
)
)
(
[images] => Array
(
[zOATXRLfW2c.jpg] => Array
(
[file_title] => zOATXRLfW2c
[file_path] => javascript:void(0)" onclick ="googlereader('gallery-images/zOATXRLfW2c.jpg')
[thumb_path] => resources/cache/160x61-75-01e2e8e31007cdadd3a39d779e374326e83e55f3bf1047462e1cccc7cb0ed3cf.jpg
)
[xqJr5PXvbDI.jpg] => Array
(
[file_title] => xqJr5PXvbDI
[file_path] => javascript:void(0)" onclick ="googlereader('gallery-images/xqJr5PXvbDI.jpg')
[thumb_path] => resources/cache/160x61-75-8e3b37dd15213aed877d3b0b3dcad52c79245698b3f85ce331d8c102fcb7ff6b.jpg
)
)
Gewijzigd op 03/07/2017 12:32:20 door Hans De Ridder
Code (php)
1
[file_path] => javascript:void(0)" onclick ="googlereader('gallery-images/zOATXRLfW2c.jpg')
Dit ding is (of lijkt in ieder geval in eerste instantie) volledig afleidbaar uit file_title en is zodoende compleet overbodig. Indien deze data aangeleverd wordt en je hebt geen invloed op de inhoud: laat maar zitten dan.
De key van images is de bestandsnaam, en geen index. Als je het melden + weergeven van fouten tijdens ontwikkeling aan had staan zou PHP moeten zeuren over undefined indexes...
Je zou zoiets kunnen doen?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
foreach ($galleryArray['images'] as $imageName => $imageData) {
// doe je ding
}
?>
foreach ($galleryArray['images'] as $imageName => $imageData) {
// doe je ding
}
?>
Hierbij helpt het ook enorm als je een zinnige naamgeving voor variabelen gebruikt. En wellicht een opfriscursus m.b.t. de werking van (geneste) arrays.
Gewijzigd op 03/07/2017 13:15:45 door Thomas van den Heuvel
Bedankt voor je reactie Thomas.
Ik werk vanuit een bestaand open-source fotoboek. met nogal wat instellingen.
Ik ben die wat aan het aanpassen, waar dat in mijn vermogen ligt.
En ik dacht door een referentie in de afbeeldingen een volgorde te maken
waarbij er telkens 2 afbeeldingen in de array achter elkaar werden gezet.
En dan een teller zoals Ben en Dennis het aangaven.
Maar dat krijg ik (nog) niet voor elkaar.
Vandaar dat ik nog heb gekeken naar optie met 2 arrays.
Maar de open-sourcecode zitten zoveel instellingen en verwijzingen.
Ik denk dat ik ben aangewezen op 1 array. waar alle foto's in zitten.
en dan met truc(?) telkens die twee waarden eruit vis.
Ik werk vanuit een bestaand open-source fotoboek. met nogal wat instellingen.
Ik ben die wat aan het aanpassen, waar dat in mijn vermogen ligt.
En ik dacht door een referentie in de afbeeldingen een volgorde te maken
waarbij er telkens 2 afbeeldingen in de array achter elkaar werden gezet.
En dan een teller zoals Ben en Dennis het aangaven.
Maar dat krijg ik (nog) niet voor elkaar.
Vandaar dat ik nog heb gekeken naar optie met 2 arrays.
Maar de open-sourcecode zitten zoveel instellingen en verwijzingen.
Ik denk dat ik ben aangewezen op 1 array. waar alle foto's in zitten.
en dan met truc(?) telkens die twee waarden eruit vis.
Of je introduceert een tussenstap, waarbij je eerst alle relevante data uitleest en deze vervolgens in je eigen data-structuur plaatst, zoals jij deze wilt gebruiken. Maar hoe weet je wat bij elkaar hoort? Staat alles op volgorde in gallery-images en youtube-images? Hoe ziet $youtubeArray er uit?
Er zit in de open-source een sorteermogelijkheid.
Dus ik kan met een referentie in de bestandsnaam (bijv uniek lidnummer) de twee bijbehorende
bestanden bij elkaar zetten.
bijv. 253531#gegevens bestand 1.jpg
253531#gegevens bestand 2.jpg
Afhankelijk van de gegevens wordt er bepaald hoe er iets uitgelezen wordt.
gegevens bestand 1 gaan naar een youtubespeler.
gegevens bestand 2 gaan naar een formulier.
Op de een of andere manier lukt het me niet om de gegevens uit te draaien...
Hier mijn werkvoorbeeld waarbij nu de onderste verwijzing naar vaste code gaat (altijd zelfde video)
De bovenste youtube thumb gaat bij click naar de youtube.
Pagina 1 werken de eerste 8 beelden.
http://pctraverse.nl/csstest/flyers/index.php
Dus ik kan met een referentie in de bestandsnaam (bijv uniek lidnummer) de twee bijbehorende
bestanden bij elkaar zetten.
bijv. 253531#gegevens bestand 1.jpg
253531#gegevens bestand 2.jpg
Afhankelijk van de gegevens wordt er bepaald hoe er iets uitgelezen wordt.
gegevens bestand 1 gaan naar een youtubespeler.
gegevens bestand 2 gaan naar een formulier.
Op de een of andere manier lukt het me niet om de gegevens uit te draaien...
Hier mijn werkvoorbeeld waarbij nu de onderste verwijzing naar vaste code gaat (altijd zelfde video)
De bovenste youtube thumb gaat bij click naar de youtube.
Pagina 1 werken de eerste 8 beelden.
http://pctraverse.nl/csstest/flyers/index.php
Als je een (gedeeltelijke) uitdraai van $youtubeArray kunt geven kunnen we makkelijk bepalen of we hier rechtstreeks aan kunnen refereren of dat we $galleryArray kunnen uitbreiden met relevante informatie uit $youtubeArray, en hoe.
Ik kan die $youtubeArray niet laten zien, want die is er (nog) niet. Dat idee kwam later pas.
Vandaar dat ik refereer naar dezelfde map.
Want die $galleryArray loop via heel veel instellingen op verschillende PHP bestanden.
Als ik dat doe, dan ziet hij er hetzelfde uit als de $galleryArray wat opbouw betreft.
Wil ik datzelfde doen voor $youtubeArray, dan moet ik al die bestanden nalopen in de open-source.
Dus dan maar alle bestanden in 1 map.
Die tussenstap vind ik wel interessant...maar wil ook nog niet echt lukken..
Toevoeging op 03/07/2017 22:27:37:
Ben wel iets verder gekomen.
Heb de bestanden in een nieuwe array gestopt. (tussenstap)
En als ik die uitlees dan worden de velden weer gevuld.
De foreach heb ik alleen gebruikt om te testen.
Ik zoek nu nog naar een oplossing om deze array om te bouwen naar de oorspronkelijke array.
Met name de verwijzing naar de thumbs die geplaatst worden.
Tot zover in ieder geval bedankt voor jullie geduld en adviezen.
Vandaar dat ik refereer naar dezelfde map.
Want die $galleryArray loop via heel veel instellingen op verschillende PHP bestanden.
Als ik dat doe, dan ziet hij er hetzelfde uit als de $galleryArray wat opbouw betreft.
Wil ik datzelfde doen voor $youtubeArray, dan moet ik al die bestanden nalopen in de open-source.
Dus dan maar alle bestanden in 1 map.
Die tussenstap vind ik wel interessant...maar wil ook nog niet echt lukken..
Toevoeging op 03/07/2017 22:27:37:
Ben wel iets verder gekomen.
Heb de bestanden in een nieuwe array gestopt. (tussenstap)
En als ik die uitlees dan worden de velden weer gevuld.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$d = "../../../gallery-images/";
$files = array();
if(!is_dir($d)){
echo "geen gegevens";
}
else
{
$dir = opendir($d);
while ($f = readdir($dir)){
$match = strtolower($f);
if (eregi(".jpg",$match)){
array_push($files,"$f");
}
}
}
sort($files, SORT_NATURAL | SORT_FLAG_CASE);
foreach ($files as $key => $val) {
echo "files[" . $key . "] = " . $val . "\n";
}
?>
$d = "../../../gallery-images/";
$files = array();
if(!is_dir($d)){
echo "geen gegevens";
}
else
{
$dir = opendir($d);
while ($f = readdir($dir)){
$match = strtolower($f);
if (eregi(".jpg",$match)){
array_push($files,"$f");
}
}
}
sort($files, SORT_NATURAL | SORT_FLAG_CASE);
foreach ($files as $key => $val) {
echo "files[" . $key . "] = " . $val . "\n";
}
?>
De foreach heb ik alleen gebruikt om te testen.
Ik zoek nu nog naar een oplossing om deze array om te bouwen naar de oorspronkelijke array.
Met name de verwijzing naar de thumbs die geplaatst worden.
Tot zover in ieder geval bedankt voor jullie geduld en adviezen.
Het gaat wel lukken met die tussenstap.
De thumbs heb ik nu zonder hash. Dus kan de bestandsnaam gebruiken maar dan in andere map.
De thumbs heb ik nu zonder hash. Dus kan de bestandsnaam gebruiken maar dan in andere map.
Gewijzigd op 04/07/2017 20:00:42 door Hans De Ridder




