controleren of 2 values bestaan in een array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sietsko Bos

Sietsko Bos

27/05/2020 14:04:22
Quote Anchor link
Hoi,

Ik probeer 4 unieke verbindingen in een array te krijgen maar denk dat d econtrole niet goed werkt.
Iemand een idee wat er fout gaat?

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
<?php

$_SESSION
['antwoorden'] = array ();

function
in_array_r($needle, $haystack, $strict = false) {
    foreach ($haystack as $item) {
        if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
            return true;
        }
    }

    return false;
}


do {
    
    do {
            
        $source = rand (0, 3);
        $target = rand (0, 3);
            
        $verbinding = (array("source" => $source, "target" => $target));
    
    }
while (in_array_r($verbinding, $_SESSION['antwoorden']) === true);

    // zet de verbindingen in de antwoorden array
    array_push ($_SESSION['antwoorden'], $verbinding);
        
}
while (count($_SESSION['antwoorden']) < 4);
?>
Gewijzigd op 27/05/2020 14:05:21 door Sietsko Bos
 
PHP hulp

PHP hulp

15/07/2020 03:02:00
 
- Ariën -
Beheerder

- Ariën -

27/05/2020 14:20:49
Quote Anchor link
Misschien is het handig om wat meer te vertellen wat er fout gaat, wat je invoert, en wat er gebeurt, en wat je verwacht?

Tot nu toe is dit nog best een karig 'glazen bol' topic.
 
Adoptive Solution

Adoptive Solution

27/05/2020 14:25:42
Quote Anchor link
Zet foutmeldingen aan en je krijgt paginas foutmeldingen.

In plaats van $_SESSION['antwoorden'] gebruik $antwoorden = [];

Dan voor het resultaat :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo '<pre>' . print_r( $antwoorden , TRUE ) . '<pre>';


Toevoeging op 27/05/2020 14:28:14:

Zo dus

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
$antwoorden
= [];

do {
    do {
        $source = rand (0, 3);
        $target = rand (0, 3);

        $verbinding = ( array( "source" => $source, "target" => $target) );
    }
while ( in_array_r( $verbinding, $antwoorden ) === true );

    // zet de verbindingen in de antwoorden array
    array_push ( $antwoorden, $verbinding );
        
}
while ( count( $antwoorden ) < 4 );

echo '<pre>' . print_r( $antwoorden , TRUE ) . '<pre>';

?>
 
Sietsko Bos

Sietsko Bos

27/05/2020 14:39:51
Quote Anchor link
Wat maakt het verschil met $antwoorden = []; en $_SESSION['antwoorden'] ????
 
Adoptive Solution

Adoptive Solution

27/05/2020 14:45:23
Quote Anchor link
Omdat de stille hint niet doorkwam.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3

Warning: Invalid argument supplied for foreach() in checkneedle.php on line 4 Warning: array_push() expects parameter 1 to be array, null given in checkneedle.php on line 26 Warning: count(): Parameter must be an array or an object that implements Countable in checkneedle.php on line 28 Warning: Invalid argument supplied for foreach() in checkneedle.php on line 4 Warning: array_push() expects parameter 1 to be array, null given in checkneedle.php on line 26 Warning: count(): Parameter must be an array or an object that implements Countable in checkneedle.php on line 28 Warning: Invalid argument supplied for foreach() in checkneedle.php on line 4 Warning: array_push() expects parameter 1 to be array, null given in checkneedle.php on line 26 Warning: count(): Parameter must be an array or an object that implements Countable in checkneedle.php on line 28 Warning: Invalid argument supplied for foreach() in checkneedle.php on line 4 Warning: array_push() expects parameter 1 to be array, null given in checkneedle.php on line 26 Warning: count(): Parameter must be an array or an object that implements Countable in checkneedle.php on line 28 Warning: Invalid argument supplied for foreach() in checkneedle.php on line 4 Warning: array_push() expects parameter 1 to be ar.....
Pagina na pagina
Gewijzigd op 27/05/2020 14:46:26 door Adoptive Solution
 
Sietsko Bos

Sietsko Bos

27/05/2020 14:54:23
Quote Anchor link
Wel vreemd, want ik heb deze functie vaker gebruikt zonder problemen.

Nog steeds zijn de 4 verbindingen niet uniek.

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
Array
(
    [0] => Array
        (
            [source] => 3
            [target] => 0
        )

    [1] => Array
        (
            [source] => 0
            [target] => 2
        )

    [2] => Array
        (
            [source] => 1
            [target] => 1
        )

    [3] => Array
        (
            [source] => 3
            [target] => 1
        )

)

2x een source 3 en target 1
Gewijzigd op 27/05/2020 15:03:33 door Sietsko Bos
 
Thomas van den Heuvel

Thomas van den Heuvel

27/05/2020 15:44:39
Quote Anchor link
Dit is prima te doen met standaard array-functies?
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
<?php
$source
= range(0, 3);
$target = range(0, 3);
shuffle($source);
shuffle($target);

$data = array();
foreach ($source as $k => $v) {
    $data[] = array(
        'source' => $v,
        'target' => $target[$k],
    );
}


echo '<pre>'.print_r($data, true).'</pre>';
?>
 
Sietsko Bos

Sietsko Bos

27/05/2020 16:45:19
Quote Anchor link
Thanks Thomas, weer wat geleerd dat er meerdere wegen naar een goed script leiden :)
 



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.