Oké ik ben echt nieuw met arrays maar het leek me nu een goede oplossing dus daarom gebruik ik het nu voor het eerst. Probleem is alleen dat het niet werkt dus zodoende heb ik even jullie hulp nodig.

Ik heb momenteel een array onder $arrayid en die output het volgende wanneer ik dit uitvoer:

<?php
print_r($arrayid); 
?>


Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) [2] => Array ( [id] => 3 ) [3] => Array ( [id] => 5 ) [4] => Array ( [id] => 6 ) [5] => Array ( [id] => 7 ) )


Ik heb vanuit mijn database alle id's in een array gestopt en nu wil ik controleren of de waarde van een variable daarin voorkomt. Dat doe ik als volgt:

<?php
if (in_array($id, $arrayid)) {
			
				$_SESSION['berichtid'] = $id;
				echo 1;
				
			} else {
				
				echo 2; // 2 = error
				
			}
?>


De waarde van $id is een enkel getal bijvoorbeeld 1,3,5 of 7. Maar het mislukt steeds, ik krijg altijd echo 2; terug.
Je hebt een array in een array, hij ziet dus geen getallen om te zoeken maar alleen maar arrays.
Gaat niet werken omdat je een twee dimensionale array hebt. (Een array in een array)
<?php
foreach($arrayid as $id)
echo $id['id'];
?>
Oké en hoe doe ik dat anders? Ik maak zo mijn array aan:


<?php
// Haal alle id's van berichten op die er bestaan
		$sql = "SELECT id
				FROM berichten";
		$result = $conn->query($sql);

		// Maak array
		$arrayid = array();

		// Check of er een bericht is om weer te geven
		if ($result->num_rows > 0) {
			
			// Haal ids op
			while($row = mysqli_fetch_assoc($result)) {
				
				// Stop alle id's in een array
				$arrayid[] = $row;

			}
			
			// Sluit de connectie met de database
			mysqli_close($conn);
?>
Waarom een multidimensionale array, als je maar één waarde gebruikt?

Gebruik dan gewoon dit, dan lukt het wel.
$arrayid[] = $row['id'];
<?php

// Stop alle id's in een array
                $arrayid[] = $row['id'];

?>
Of stop de id's in de key in plaats van in de value.

isset() en array_key_exists() zijn doorgaans sneller dan in_array().

<?php
$id = 5;
$array[$id] = true; // geef de index een dummy-waarde

if (isset($array[$id])) {
    echo 'cake :)';
} else {
    echo 'no cake :(';
}

if (array_key_exists($id, $array)) {
    echo 'cake :)';
} else {
    echo 'no cake :(';
}
?>


Let hierbij (en in het algemeen) op met het gebruik van NULL waarden.
Bedankt, ik had het voorbeeld ergens gevonden hoe ik de inhoud van een database waarde in een array kon krijgen.
Maar heb het nu aangepast naar onderstaand en het werkt nu perfect. :-)

<?php
$arrayid[] = $row['id'];
?>

Reageren