Hoi mensen, ik ben geen programmeur, maar rommel af en toe wat in bestaande scriptjes.
Soms gaat dat goed, maar als ik er niet uit kom, dan roep ik graag de hulp in van de experts op dit prachtige forum.

Ik heb een IP-cam en laat dat beeld via mijn weersoftware voorzien van de actuele weergegevens.
Via een cronjob laat ik iedere 5 minuten een image in een webdirectory plaatsen.

Via een hutselknutsel scriptje kan ik de laatste 40 beelden zien
(omdat de afbeeldingen steeds een ander nummer hebben, worden de meest recente images op volgorde van tijd getoond)

<?php
foreach (glob('*.jpg') as $f) {
    # store the image name with the last modification time and imagename as a key
    $list[filemtime($f) . '-' . $f] = $f;
}   

$keys = array_keys($list);      
sort($keys);                    # sort is oldest to newest,


echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
echo "<img src=\"" . $list[array_pop($keys)] . "\" /><br><br>";
?>



Het resultaat daarvan kun je hier zien:
https://www.bommeltje.nl/files/webcam.php

Maar nu zou ik graag in plaats van alle afbeeldingen onder elkaar een snelle slideshow willen laten zien van de laatste 40 afbeeldingen.
Dus je laat een afbeelding zien bijv. een halve seconde en dan wordt de volgende afbeelding getoond en zo voort.
Als de laatste is getoond, dan begin je weer met de eerste.

Weet iemand hier een oplossing voor?
Is zoiets wel mogelijk in PHP?
Stel jullie hulp enorm op prijs!
Waarom een hele lijst met herhalende regels?
Dit kan prima met een foreach gedaan worden. Hoe ziet $list eruit?
Hoi Ariën,

Zoals jij meteen door had ben ik geen PHP kenner, ik rommel maar wat :)
Ik zag dat als ik 3 regels daar plaatste, dan kreeg ik 3 afbeeldingen te zien.
Toen ik er 40 regels van maakte, toen kreeg ik mijn 40 afbeeldingen te zien (ik al helemaal blij haha :)

In die directory staan op dit moment zo'n kleine 300 afbeeldingen.
Ik schoon die directory regelmatig op, waarna het aantal weer langzaam oploopt.
De bestandsnamen zijn steeds anders en vandaar dat ik steeds de 40 meest recente afbeeldingen wil laten zien.

Hoe kan ik $list zichtbaar maken?

Met print_r:

<?php
echo "<pre>".print_r($list,true)."</pre>";
?>

En met [php]array_slice[/php] kan je eenvoudig een deel van je array tonen.
Als ik die onder bovenstaande code plak, dan komt er dit uit:



Array
(
    [1640537756-10.jpg] => 10.jpg
    [1640564790-100.jpg] => 100.jpg
    [1640565054-101.jpg] => 101.jpg
    [1640565408-102.jpg] => 102.jpg
    [1640565666-103.jpg] => 103.jpg
    [1640565952-104.jpg] => 104.jpg
    [1640566253-105.jpg] => 105.jpg
    [1640566564-106.jpg] => 106.jpg
    [1640566977-107.jpg] => 107.jpg
    [1640567226-108.jpg] => 108.jpg
    [1640567467-109.jpg] => 109.jpg
    [1640538089-11.jpg] => 11.jpg
    [1640567752-110.jpg] => 110.jpg
    [1640568063-111.jpg] => 111.jpg
    [1640568355-112.jpg] => 112.jpg
    [1640568671-113.jpg] => 113.jpg
    [1640568947-114.jpg] => 114.jpg
    [1640569256-115.jpg] => 115.jpg
    [1640569560-116.jpg] => 116.jpg
    [1640569852-117.jpg] => 117.jpg
    [1640570160-118.jpg] => 118.jpg
    [1640570470-119.jpg] => 119.jpg
    [1640538349-12.jpg] => 12.jpg
    [1640570752-120.jpg] => 120.jpg
    [1640571130-121.jpg] => 121.jpg
    [1640571353-122.jpg] => 122.jpg
    [1640571657-123.jpg] => 123.jpg
    [1640571959-124.jpg] => 124.jpg
    [1640572250-125.jpg] => 125.jpg
    [1640572565-126.jpg] => 126.jpg
    [1640572847-127.jpg] => 127.jpg
    [1640573184-128.jpg] => 128.jpg
    [1640573486-129.jpg] => 129.jpg
    [1640538659-13.jpg] => 13.jpg
    [1640573797-130.jpg] => 130.jpg
    [1640574105-131.jpg] => 131.jpg
    [1640574408-132.jpg] => 132.jpg
    [1640574687-133.jpg] => 133.jpg
    [1640574995-134.jpg] => 134.jpg
    [1640575275-135.jpg] => 135.jpg
    [1640575656-136.jpg] => 136.jpg
    [1640575951-137.jpg] => 137.jpg
    [1640576234-138.jpg] => 138.jpg
    [1640576511-139.jpg] => 139.jpg
    [1640538988-14.jpg] => 14.jpg
    [1640576843-140.jpg] => 140.jpg
    [1640577114-141.jpg] => 141.jpg
    [1640577446-142.jpg] => 142.jpg
    [1640577803-143.jpg] => 143.jpg
    [1640577977-144.jpg] => 144.jpg
    [1640578386-145.jpg] => 145.jpg
    [1640578697-146.jpg] => 146.jpg
    [1640578975-147.jpg] => 147.jpg
    [1640579223-148.jpg] => 148.jpg
    [1640579477-149.jpg] => 149.jpg
    [1640539262-15.jpg] => 15.jpg
    [1640579753-150.jpg] => 150.jpg
    [1640580092-151.jpg] => 151.jpg
    [1640580424-152.jpg] => 152.jpg
    [1640580734-153.jpg] => 153.jpg
    [1640580975-154.jpg] => 154.jpg
    [1640581271-155.jpg] => 155.jpg
    [1640581643-156.jpg] => 156.jpg
    [1640581863-157.jpg] => 157.jpg
    [1640582210-158.jpg] => 158.jpg
    [1640582477-159.jpg] => 159.jpg
    [1640539620-16.jpg] => 16.jpg
    [1640582758-160.jpg] => 160.jpg
    [1640583095-161.jpg] => 161.jpg
    [1640583345-162.jpg] => 162.jpg
    [1640583669-163.jpg] => 163.jpg
    [1640583980-164.jpg] => 164.jpg
    [1640584248-165.jpg] => 165.jpg
    [1640584607-166.jpg] => 166.jpg
    [1640584897-167.jpg] => 167.jpg
    [1640585213-168.jpg] => 168.jpg
    [1640585461-169.jpg] => 169.jpg
    [1640539892-17.jpg] => 17.jpg
    [1640585806-170.jpg] => 170.jpg
    [1640586140-171.jpg] => 171.jpg
    [1640586355-172.jpg] => 172.jpg
    [1640586668-173.jpg] => 173.jpg
    [1640586983-174.jpg] => 174.jpg
    [1640587302-175.jpg] => 175.jpg
    [1640587550-176.jpg] => 176.jpg
    [1640587912-177.jpg] => 177.jpg
    [1640588189-178.jpg] => 178.jpg
    [1640588475-179.jpg] => 179.jpg
    [1640540160-18.jpg] => 18.jpg
    [1640588793-180.jpg] => 180.jpg
    [1640589083-181.jpg] => 181.jpg
    [1640589375-182.jpg] => 182.jpg
    [1640589682-183.jpg] => 183.jpg
    [1640589982-184.jpg] => 184.jpg
    [1640590278-185.jpg] => 185.jpg
    [1640590584-186.jpg] => 186.jpg
    [1640590875-187.jpg] => 187.jpg
    [1640591183-188.jpg] => 188.jpg
    [1640591477-189.jpg] => 189.jpg
    [1640540450-19.jpg] => 19.jpg
    [1640591758-190.jpg] => 190.jpg
    [1640592145-191.jpg] => 191.jpg
    [1640592396-192.jpg] => 192.jpg
    [1640592676-193.jpg] => 193.jpg
    [1640593007-194.jpg] => 194.jpg
    [1640593309-195.jpg] => 195.jpg
    [1640593582-196.jpg] => 196.jpg
    [1640593890-197.jpg] => 197.jpg
    [1640594181-198.jpg] => 198.jpg
    [1640594470-199.jpg] => 199.jpg
    [1640540787-20.jpg] => 20.jpg
    [1640594888-200.jpg] => 200.jpg
    [1640595056-201.jpg] => 201.jpg
    [1640595384-202.jpg] => 202.jpg
    [1640595684-203.jpg] => 203.jpg
    [1640595976-204.jpg] => 204.jpg
    [1640596262-205.jpg] => 205.jpg
    [1640596570-206.jpg] => 206.jpg
    [1640596875-207.jpg] => 207.jpg
    [1640597178-208.jpg] => 208.jpg
    [1640597520-209.jpg] => 209.jpg
    [1640541060-21.jpg] => 21.jpg
    [1640597830-210.jpg] => 210.jpg
    [1640598071-211.jpg] => 211.jpg
    [1640598375-212.jpg] => 212.jpg
    [1640598654-213.jpg] => 213.jpg
    [1640598977-214.jpg] => 214.jpg
    [1640599276-215.jpg] => 215.jpg
    [1640599612-216.jpg] => 216.jpg
    [1640599912-217.jpg] => 217.jpg
    [1640600185-218.jpg] => 218.jpg
    [1640600513-219.jpg] => 219.jpg
    [1640541390-22.jpg] => 22.jpg
    [1640600752-220.jpg] => 220.jpg
    [1640601197-221.jpg] => 221.jpg
    [1640601438-222.jpg] => 222.jpg
    [1640601831-223.jpg] => 223.jpg
    [1640602076-224.jpg] => 224.jpg
    [1640602282-225.jpg] => 225.jpg
    [1640602578-226.jpg] => 226.jpg
    [1640602890-227.jpg] => 227.jpg
    [1640603182-228.jpg] => 228.jpg
    [1640603456-229.jpg] => 229.jpg
    [1640541725-23.jpg] => 23.jpg
    [1640603797-230.jpg] => 230.jpg
    [1640604087-231.jpg] => 231.jpg
    [1640604443-232.jpg] => 232.jpg
    [1640604736-233.jpg] => 233.jpg
    [1640605017-234.jpg] => 234.jpg
    [1640605274-235.jpg] => 235.jpg
    [1640605643-236.jpg] => 236.jpg
    [1640605888-237.jpg] => 237.jpg
    [1640606195-238.jpg] => 238.jpg
    [1640606536-239.jpg] => 239.jpg
    [1640541957-24.jpg] => 24.jpg
    [1640606878-240.jpg] => 240.jpg
    [1640607075-241.jpg] => 241.jpg
    [1640607381-242.jpg] => 242.jpg
    [1640607690-243.jpg] => 243.jpg
    [1640607981-244.jpg] => 244.jpg
    [1640608299-245.jpg] => 245.jpg
    [1640608590-246.jpg] => 246.jpg
    [1640608996-247.jpg] => 247.jpg
    [1640609186-248.jpg] => 248.jpg
    [1640609499-249.jpg] => 249.jpg
    [1640542291-25.jpg] => 25.jpg
    [1640609791-250.jpg] => 250.jpg
    [1640610077-251.jpg] => 251.jpg
    [1640610430-252.jpg] => 252.jpg
    [1640610682-253.jpg] => 253.jpg
    [1640610989-254.jpg] => 254.jpg
    [1640611281-255.jpg] => 255.jpg
    [1640611597-256.jpg] => 256.jpg
    [1640611891-257.jpg] => 257.jpg
    [1640612173-258.jpg] => 258.jpg
    [1640612520-259.jpg] => 259.jpg
    [1640542648-26.jpg] => 26.jpg
    [1640612777-260.jpg] => 260.jpg
    [1640613085-261.jpg] => 261.jpg
    [1640613511-262.jpg] => 262.jpg
    [1640613671-263.jpg] => 263.jpg
    [1640613995-264.jpg] => 264.jpg
    [1640614261-265.jpg] => 265.jpg
    [1640614582-266.jpg] => 266.jpg
    [1640614891-267.jpg] => 267.jpg
    [1640615219-268.jpg] => 268.jpg
    [1640615479-269.jpg] => 269.jpg
    [1640542995-27.jpg] => 27.jpg
    [1640615761-270.jpg] => 270.jpg
    [1640616081-271.jpg] => 271.jpg
    [1640616379-272.jpg] => 272.jpg
    [1640616665-273.jpg] => 273.jpg
    [1640616977-274.jpg] => 274.jpg
    [1640617285-275.jpg] => 275.jpg
    [1640617563-276.jpg] => 276.jpg
    [1640617894-277.jpg] => 277.jpg
    [1640618200-278.jpg] => 278.jpg
    [1640618458-279.jpg] => 279.jpg
    [1640543229-28.jpg] => 28.jpg
    [1640618786-280.jpg] => 280.jpg
    [1640619121-281.jpg] => 281.jpg
    [1640619345-282.jpg] => 282.jpg
    [1640619678-283.jpg] => 283.jpg
    [1640619976-284.jpg] => 284.jpg
    [1640620342-285.jpg] => 285.jpg
    [1640620636-286.jpg] => 286.jpg
    [1640620903-287.jpg] => 287.jpg
    [1640621161-288.jpg] => 288.jpg
    [1640621546-289.jpg] => 289.jpg
    [1640543460-29.jpg] => 29.jpg
    [1640621774-290.jpg] => 290.jpg
    [1640622065-291.jpg] => 291.jpg
    [1640622375-292.jpg] => 292.jpg
    [1640622722-293.jpg] => 293.jpg
    [1640622956-294.jpg] => 294.jpg
    [1640623275-295.jpg] => 295.jpg
    [1640623555-296.jpg] => 296.jpg
    [1640623878-297.jpg] => 297.jpg
    [1640624231-298.jpg] => 298.jpg
    [1640624467-299.jpg] => 299.jpg
    [1640535544-3.jpg] => 3.jpg
    [1640543774-30.jpg] => 30.jpg
    [1640624783-301.jpg] => 301.jpg
    [1640625052-302.jpg] => 302.jpg
    [1640544075-31.jpg] => 31.jpg
    [1640544376-32.jpg] => 32.jpg
    [1640544709-33.jpg] => 33.jpg
    [1640544959-34.jpg] => 34.jpg
    [1640545265-35.jpg] => 35.jpg
    [1640545562-36.jpg] => 36.jpg
    [1640545861-37.jpg] => 37.jpg
    [1640546230-38.jpg] => 38.jpg
    [1640546543-39.jpg] => 39.jpg
    [1640535955-4.jpg] => 4.jpg
    [1640546758-40.jpg] => 40.jpg
    [1640547057-41.jpg] => 41.jpg
    [1640547367-42.jpg] => 42.jpg
    [1640547670-43.jpg] => 43.jpg
    [1640547983-44.jpg] => 44.jpg
    [1640548266-45.jpg] => 45.jpg
    [1640548681-46.jpg] => 46.jpg
    [1640548879-47.jpg] => 47.jpg
    [1640549147-48.jpg] => 48.jpg
    [1640549460-49.jpg] => 49.jpg
    [1640536273-5.jpg] => 5.jpg
    [1640549758-50.jpg] => 50.jpg
    [1640550068-51.jpg] => 51.jpg
    [1640550349-52.jpg] => 52.jpg
    [1640550675-53.jpg] => 53.jpg
    [1640550953-54.jpg] => 54.jpg
    [1640551315-55.jpg] => 55.jpg
    [1640551619-56.jpg] => 56.jpg
    [1640551858-57.jpg] => 57.jpg
    [1640552216-58.jpg] => 58.jpg
    [1640552466-59.jpg] => 59.jpg
    [1640536629-6.jpg] => 6.jpg
    [1640552778-60.jpg] => 60.jpg
    [1640553116-61.jpg] => 61.jpg
    [1640553375-62.jpg] => 62.jpg
    [1640553651-63.jpg] => 63.jpg
    [1640553963-64.jpg] => 64.jpg
    [1640554328-65.jpg] => 65.jpg
    [1640554550-66.jpg] => 66.jpg
    [1640554854-67.jpg] => 67.jpg
    [1640555159-68.jpg] => 68.jpg
    [1640555460-69.jpg] => 69.jpg
    [1640536854-7.jpg] => 7.jpg
    [1640555763-70.jpg] => 70.jpg
    [1640556146-71.jpg] => 71.jpg
    [1640556358-72.jpg] => 72.jpg
    [1640556655-73.jpg] => 73.jpg
    [1640557023-74.jpg] => 74.jpg
    [1640557251-75.jpg] => 75.jpg
    [1640557555-76.jpg] => 76.jpg
    [1640557869-77.jpg] => 77.jpg
    [1640558153-78.jpg] => 78.jpg
    [1640558443-79.jpg] => 79.jpg
    [1640537177-8.jpg] => 8.jpg
    [1640558767-80.jpg] => 80.jpg
    [1640559047-81.jpg] => 81.jpg
    [1640559347-82.jpg] => 82.jpg
    [1640559669-83.jpg] => 83.jpg
    [1640559954-84.jpg] => 84.jpg
    [1640560381-85.jpg] => 85.jpg
    [1640560568-86.jpg] => 86.jpg
    [1640560849-87.jpg] => 87.jpg
    [1640561157-88.jpg] => 88.jpg
    [1640561458-89.jpg] => 89.jpg
    [1640537473-9.jpg] => 9.jpg
    [1640561813-90.jpg] => 90.jpg
    [1640562059-91.jpg] => 91.jpg
    [1640562376-92.jpg] => 92.jpg
    [1640562652-93.jpg] => 93.jpg
    [1640562955-94.jpg] => 94.jpg
    [1640563258-95.jpg] => 95.jpg
    [1640563556-96.jpg] => 96.jpg
    [1640563863-97.jpg] => 97.jpg
    [1640564208-98.jpg] => 98.jpg
    [1640564447-99.jpg] => 99.jpg
)


En heb je al array_slice geprobeerd?

Dan kan je bijv. de laatste 40 elementen tonen.
Ik heb dit geprobeerd:

echo print_r(array_slice($keys,0,40));

dan komt er dit uit:


Array ( [0] => 1640535544-3.jpg [1] => 1640535955-4.jpg [2] => 1640536273-5.jpg [3] => 1640536629-6.jpg [4] => 1640536854-7.jpg [5] => 1640537177-8.jpg [6] => 1640537473-9.jpg [7] => 1640537756-10.jpg [8] => 1640538089-11.jpg [9] => 1640538349-12.jpg [10] => 1640538659-13.jpg [11] => 1640538988-14.jpg [12] => 1640539262-15.jpg [13] => 1640539620-16.jpg [14] => 1640539892-17.jpg [15] => 1640540160-18.jpg [16] => 1640540450-19.jpg [17] => 1640540787-20.jpg [18] => 1640541060-21.jpg [19] => 1640541390-22.jpg [20] => 1640541725-23.jpg [21] => 1640541957-24.jpg [22] => 1640542291-25.jpg [23] => 1640542648-26.jpg [24] => 1640542995-27.jpg [25] => 1640543229-28.jpg [26] => 1640543460-29.jpg [27] => 1640543774-30.jpg [28] => 1640544075-31.jpg [29] => 1640544376-32.jpg [30] => 1640544709-33.jpg [31] => 1640544959-34.jpg [32] => 1640545265-35.jpg [33] => 1640545562-36.jpg [34] => 1640545861-37.jpg [35] => 1640546230-38.jpg [36] => 1640546543-39.jpg [37] => 1640546758-40.jpg [38] => 1640547057-41.jpg [39] => 1640547367-42.jpg )


Dat zijn niet de laatste 40 afbeeldingen, maar dat zal wel aan mijn code liggen :)
dan zijn de eerste 40.

https://www.php.net/array-slice is de handleiding.

daar zie je dat je ipv 0, 40 alleen maar -40 had moeten invullen voor de laatste 40
Is het niet handig om enkel de datum-timestamp te gebruiken als key?
Dan is sorteren ook makkelijker, omdat hij anders alfabetisch sorteert.

    $list[filemtime($f)] = $f;


Doe gebeurt juist bij dit:

[1640567226-108.jpg] => 108.jpg
[1640567467-109.jpg] => 109.jpg
[1640538089-11.jpg] => 11.jpg
[1640567752-110.jpg] => 110.jpg


En zo pak je dus de laatste 40 elementen uit je array.
Die true-boolean is om de key te behouden.

<?php
array_slice($list, -40, 40, true);
?>

Reageren