[PHP] In_array bij 3d array

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Goedemorgen iedereen,

Aan de hand van een ander topic[gister] ben ik er al achter hoe ik het beste waardes in een 3d array kan opslaan.

Echter, vandaag liep k tegen een ander probleem aan. Ik wil graag kijken of een waarde al in de array is meegegeven.

De code die ik nu gebruik is:

@robbert
PHP:
1
2
3
4
5
6
7
8
<?php 
$product = array( 
    array("id" => "303980393", "naam" => "naam1", "aantal" => 1), 
    array("id" => "303980394", "naam" => "naam2", "aantal" => 2), 
    array("id" => "303980395", "naam" => "naam3", "aantal" => 3), 
    array("id" => "303980396", "naam" => "naam4", "aantal" => 4) 
); 
?>


en met deze foreach lees k m uit:
PHP:
1
2
3
4
5
<?php
foreach ($product AS $p){
   echo $p["id"] . " "  . $p["naam"] . " " . $p["aantal"];
}
?>


Nu wou ik graag willen kijken of er al een waarde aanwezig is in een array, aangezien ik gister alle ID's in 1 array had, alle namen in 1 array en alle aantallen in 1 array was dit geen probleem.

Zou ik dit nu moeten doen dmv een lus? of is er een "snellere" manier?

bvd,

Nick

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

in_array() kan dat. :)

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

Topicstarter
Dat weet ik..

maar hoe zou ik dat in deze situatie moeten doen?

PHP:
1
2
3
4
5
6
7
foreach ($product AS $p){
    if(in_array("303980396",$p)){
        echo "hebbie nou al:P";
                                exit();
    }
    echo $p["id"] . "<br>";
}


Werkt opzich wel, maar kan t ook anders?
en dan.. hij laat nu alles binnen de foreach nog steeds zien ( $p["id"] )

  • Japidoff
  • Registratie: November 2001
  • Laatst online: 25-08 15:54
je kan die lus nu gewoon weghalen, in_array() leest multidimensionale arrays!

en kijk ook eens naar array_search()

[ Voor 37% gewijzigd door Japidoff op 21-12-2006 09:20 ]

gang is alles


Verwijderd

Topicstarter
@Japidoff

PHP:
1
2
3
4
if(in_array("303980396",$product)){
    echo "hebbie nou al:P";
    exit();
}



Werkt niet

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Heb je php.net al doorgelezen want bij in_array staan 6/7 functies voor multi dim arrays. :|

Verwijderd

Verwijderd schreef op donderdag 21 december 2006 @ 09:13:
Dat weet ik..

maar hoe zou ik dat in deze situatie moeten doen?

PHP:
1
2
3
4
5
6
7
foreach ($product AS $p){
    if(in_array("303980396",$p)){
        echo "hebbie nou al:P";
                                exit();
    }
    echo $p["id"] . "<br>";
}


Werkt opzich wel, maar kan t ook anders?
en dan.. hij laat nu alles binnen de foreach nog steeds zien ( $p["id"] )
Je kan ook als key van je hoofdarray al je ID gebruiken mits uniek! Dat is nog makkelijker omdat je dan bij input al kan checken of de key al bestaat, je krijgt dan
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$product = array( 303980393=> array("id" => "303980393", "naam" => "naam1", "aantal" => 1), 03980394 => array("id" => "303980394", "naam" => "naam2", "aantal" => 2)); //enz.

// je kan nu:
$huidige = 3000030393 // waarde die je nu wil gaan chekcen

foreach ($product as $value) {
   if(array_key_exists($huidige, $product) {
    // de waarde bestaat al
}
  // waarde bestaat niet
}
}

ps. door dit te doen hoef je voortaan bij een bekende ID, niet je hele array door te lopen opzoek naar die ene key in de onderliggende array, je spreekt hem dan dus gelijk aan met $product['id']['naam'] om de naam te krijgen van een bepaalde 'id'

[ Voor 10% gewijzigd door Verwijderd op 21-12-2006 09:42 ]


Verwijderd

Topicstarter
Bedankt voor jullie reacties, het is gelukt..

dank jullie wel!

Verwijderd

Topicstarter
Inderdaad een goed idee Bo-oz ik ga het er gelijk inbouwen, dank je!
Pagina: 1