Multidimensionale array verhogen en verlagen met 1

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Giel

Giel

22/12/2008 13:22:00
Quote Anchor link
Hey,

Ik heb me ook maar eens geregistreerd hier, omdat ik er gewoon niet meer uitkom. Ben al een paar dagen op internet aan het zoeken, maar wat ik zoek, staat er niet bepaald. Misschien is het wel te gemakkelijk.. Haha, maar mijn probleem.

Ik heb een array:

Array ( [0] => Array ( [id] => 1 [naam] => naam1 ) [1] => Array ( [id] => 2 [naam] => naam2 ) [2] => Array ( [id] => 3 [naam] => naam3 ) )

output:
1 -> naam1
2 -> naam2
3 -> naam3

Nu wil ik dat ik de plaatsen kan veranderen. bijv:

2 -> naam2
1 -> naam1
3 -> naam3

Ik moet dus kunnen verhogen of verlagen met 1. Nu heb ik het geprobeerd met array_search, maar dat wil me niet lukken.

Kunnen jullie misschien uitleggen hoe ik dit kan aanpakken?

Alvast bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Giel
 
PHP hulp

PHP hulp

16/05/2024 12:09:42
 
Marco

Marco

22/12/2008 13:46:00
Quote Anchor link
Iets in deze trand?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function swapElements($element1, $element2) {
  $temp = $array[$element1];
  $array[$element1] = $array[$element2];
  $array[$element2] = $temp;
}

?>

Je geeft de functie de twee indexen mee die je omgedraaid wilt hebben, dus in jouw voorbeeld zou je dan dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
swapElements(0, 1);
?>
Gewijzigd op 01/01/1970 01:00:00 door Marco
 
Giel

Giel

23/12/2008 10:43:00
Quote Anchor link
Je idee is zo verkeerd nog niet, maar ik weet niet hoe ik hem verder moet uitwerken. Want hij doet het nog niet.
 
Marco

Marco

23/12/2008 11:57:00
Quote Anchor link
Wat heb je precies geprobeert?
 
Giel

Giel

23/12/2008 12:08: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
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$array = array(
    0 => array(
        'id' => 1,
        'naam' => 'naam1'
    ),
    1 => array(
        'id' => 2,
        'naam' => 'naam2'
    ),
    2 => array(
        'id' => 3,
        'naam' => 'naam3'
    ),
    3 => array(
        'id' => 4,
        'naam' => 'naam4'
    ),
    4 => array(
        'id' => 5,
        'naam' => 'naam5'
    ),
    5 => array(
        'id' => 6,
        'naam' => 'naam6'
    )
);


function swapElements($element1, $element2) {
  $temp = $array[$element1];
  $array[$element1] = $array[$element2];
  $array[$element2] = $temp;
}

swapElements(0, 1);

echo '<pre>' . print_r( $array, true ) . '</pre>';


:)
 
Rens nvt

Rens nvt

23/12/2008 12:14:00
Quote Anchor link
de variabele $array is niet bekend binnen je functie, als je dit bovenin je script zet krijg je daar een melding van:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
  error_reporting(E_ALL);
  ini_set("display_errors", 1);
?>

Je zou de array op de volgende manier mee kunnen geven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function swapElements(&$array, $element1, $element2) {
  $temp = $array[$element1];
  $array[$element1] = $array[$element2];
  $array[$element2] = $temp;
}


swapElements($array, 0, 1);
?>
 
Giel

Giel

23/12/2008 12:41:00
Quote Anchor link
Klopt, uit frustatie had ik dat er niet instaan, want ben zoveel aan het proberen.. Maar het werkt, maar nu is er nog een probleempje.

Als je nu op de eerste klikt, zet hij hem eronder op -1. Dat moet dus niet kunnen. Hoe zou je dat tegen moeten gaan?
 
Rens nvt

Rens nvt

23/12/2008 12:42:00
Quote Anchor link
eehrm, klikken? heb je een linkje? :-)
 
Giel

Giel

23/12/2008 12:50:00
Quote Anchor link
haha, ik zal het eventjes uitleggen.

ik heb op beeld staan.

naam1 (omhoog)(omlaag)
naam2 (omhoog)(omlaag)
naam3 (omhoog)(omlaag)

Simpel gezegd dan als je op omhoog klikt ga je naar omhoog.php?id= .. key ..

dan voert hij het script uit, maar als je nu op naam 1 klikt en dan omhoog dan gaat het fout.

Dus er moet een 'beveiliging' opkomen dat je niet bij 1 op omhoog kan klikken, en bij de laatste niet op omlaag.

Heb geen link, werk lokaal. Maar hoop dat je het nu een beetje snapt! :)
 
Rens nvt

Rens nvt

23/12/2008 13:03:00
Quote Anchor link
Dan is het toch voldoende als je bij naam1 het linkje "omhoog" verbergt, en bij naam3 "omlaag"?

bijvoorbeeld:

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
<?php
foreach ($array as $key => $value)
{

    echo $value['naam'] . " ";
    if ($key !== 0)
    {

        echo "(omhoog) ";
    }

    if ($key !== count($array) - 1)
    {

        echo "(omlaag)";
    }

    echo "<br/>";
}

?>
 
Giel

Giel

23/12/2008 13:32:00
Quote Anchor link
Dat klopt, maar ik haal de waarde uit een sessie en die geef ik vervolgens zo weer:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$aantal = count($_SESSION['boekje']);

for ($row = 0; $row < $aantal; $row++)
{
    for ($col = 0; $col < 1; $col++)
    {
    $id = $_SESSION['boekje'][$row]['id'];
    $naam = $_SESSION['boekje'][$row]['naam'];
        echo "<a href='../index.php?p=recept&id=$id'>".$_SESSION['boekje'][$row]['naam']."</a>&nbsp <a href='verwijderen.php?id=$row&naam=$naam'>verwijder</a>&nbsp <a href='omhoog.php?id=$row'>Omhoog</a>&nbsp <a href='omlaag.php?id=$row'>Omlaag</a><br />";
    }


}


Zal ik het dan anders moeten doen? Kom er even helemaal niet meer uit.
 



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.