glob en array gekloot geeft nummer ipv url

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pepijn de vos

pepijn de vos

25/08/2008 14:21:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$upload
= wp_upload_dir();
$img = glob($upload['path']."/*150x150.[pj][np]g");
foreach($img as &$i) {
    $i = str_replace($upload['path'], $upload['url'], $i);
}

print_r($img);
        
for($i = 0; $i < 5; $i++) {
    echo $url = $img[rand(0, (count($img) - 1))];
    echo '<img src="'. $url .'" alt="foto" />';
}

?>


de array ziet er goed uit, vervolgens haal ik met een random nummer een url er uit om weer te geven, maar soms staat er dan een nummertje in plaats van de url.
ik kan er niet bij waarom hij dat zou doen... bestaat dat getal dan niet? heb ik dat nummer zelf in die array gezet, en geeft hij me gewoon waar ik om vraag?
 
PHP hulp

PHP hulp

26/04/2024 12:16:28
 
- SanThe -

- SanThe -

25/08/2008 15:14:00
Quote Anchor link
Die foreach is nutteloos. Die verandert $i en niet $img.
 
Hipska BE

Hipska BE

25/08/2008 15:18:00
Quote Anchor link
doe es
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

for($i = 0; $i < 5; $i++) {
    $url = rand(0, (count($img) - 1));
    echo '<img src="'. $img[$url] .'" alt="foto" />';
}


?>
 
Pepijn de vos

pepijn de vos

25/08/2008 15:26:00
Quote Anchor link
santhe, ik heb er een & voor staan, dus ik doe het met de referentie ;)

hipska, het enige wat jij doet is een tussenstapje maken toch?
ik heb de code ondertussen iets uitgebreid, maar jou truc schijnt niet te werken.

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
<?php
$upload
= wp_upload_dir();
$img = glob($upload['path']."/*150x150.[pj][np]g");
foreach($img as &$i) {
    $i = str_replace($upload['path'], $upload['url'], $i);
}

//print_r($img);
$hadthese = array();
for($i = 0; $i < 5; $i++) {
    $nr = rand(0, (count($img) - 1));
    if(in_array($nr, $hadthese)) {
        $i--;
        continue;
    }
else {
        echo '<img src="'. $img[$nr] .'" alt="foto" />';
        $hadthese[] = $nr;
    }
}

?>
 
Pepijn de vos

pepijn de vos

25/08/2008 15:39:00
Quote Anchor link
hehe, nader onderzoek heeft uitgewezen dat... lol

het loopt fout bij nummer 6, terwijl ik nagekeken heb dat mijn array van 0 tot 6 gaat.
en als ik gewoon zeg dat hij het getal 6 uit de array moet halen krijg ik eerst <img src="0" enz... en daar na gaat hij naar 1 2 3... geen idee waar hij die getallen vandaan haalt!
hier is mijn code nu.

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
<?php
$upload
= wp_upload_dir();
$img = glob($upload['path']."/*150x150.[pj][np]g");
foreach($img as &$i) {
    $i = str_replace($upload['path'], $upload['url'], $i);
}

print_r($img);
$hadthese = array();
for($i = 0; $i < 5; $i++) {
    echo $nr = mt_rand(0, (count($img) - 1));
    if(in_array($nr, $hadthese)) {
        $i--;
        continue;
    }
else {
        echo '<img src="'. $img[$nr] .'" alt="foto" />';
        $hadthese[] = $nr;
    }
}

?>


Edit:
oeioeioei, was dat even een bump *schaam**schaam*

Edit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
foreach($img as $i => $k) {
    $img[$i] = str_replace($upload['path'], $upload['url'], $k);
}


santhe, je had toch gelijk met je for loop... maar wat ze hier dan me bedoelen...
Quote:
As of PHP 5, you can easily modify array's elements by preceding $value with &. This will assign reference instead of copying the value.

http://www.php.net/foreach

[nog ene edit]
toch niet helemaal... net onder dat stukje van mij quote zeggen ze dat de laatste referentie van i blijft, door i te unsetten werkt het wel met die & er voor.
Gewijzigd op 01/01/1970 01:00:00 door pepijn de vos
 



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.