login  Naam:   Wachtwoord: 
Registreer je!
 Forum

waarde in andere array (Opgelost)

Offline roy - 27/06/2008 14:24
Avatar van royPHP gevorderde Beste,

Ik heb twee arrays. De ene array lees ik uit, en kijk ik of de value in de andere array voorkomt met in_array.

Als het zo is wil ik een bewerking uitvoeren met beide waarde.
Echter, in_array geeft alleen een boolean terug en niet de waarde.

is er een andere functie/methode/manier voor?

Groeten

21 antwoorden

Gesponsorde links
Offline marten - 27/06/2008 14:33
Avatar van marten Beheerder http://nl3.php....search.php
Offline roy - 27/06/2008 14:35
Avatar van roy PHP gevorderde die returned ook een bool toch
Offline MiST - 27/06/2008 14:38
Avatar van MiST Lid Array_search() returnt geen bool, kijk in de handleiding ;)

Deze methode geeft de key terug in je array ;)
Offline roy - 27/06/2008 14:40
Avatar van roy PHP gevorderde if(Array_search($value,$aPage))
{
// en dan?
}

???
Offline nemesiskoen - 27/06/2008 15:07
Avatar van nemesiskoen Gouden medaille

PHP expert
Je hebt 2 arrays. Je wil zien of een waarde in beide voorkomt, zoja dan wil je iets met die waarde doen. Dan moet je die waarde toch niet terug opvragen??? Je hebt ze dan toch. Dan is $value de waarde die je nodig hebt. niet?
Offline roy - 27/06/2008 15:14
Avatar van roy PHP gevorderde if(Array_search($value,$aPage))
{
$value;
}

kan niet:S en dat wil ik wel
Offline vinTage - 27/06/2008 15:22 (laatste wijziging 27/06/2008 15:25)
Avatar van vinTage Nieuw lid if(in_array(....))
{
$index = array_search(...)
}

edit:
  1. <?php
  2. $array = array("aap","noot","vis","vuur");
  3.  
  4. $index = array_search("ss", $array); // niks
  5. $index = array_search("noot", $array); // 1
Offline nemesiskoen - 27/06/2008 15:26 (laatste wijziging 27/06/2008 15:27)
Avatar van nemesiskoen Gouden medaille

PHP expert
euh... je moet wel iets met $value doen...
  1. if(in_array($value,$aPage))
  2. {
  3. echo $value;
  4. }
Offline vinTage - 27/06/2008 15:33
Avatar van vinTage Nieuw lid ow, ik had het helemaal verkeerd begrepen blijkbaar 
Offline roy - 27/06/2008 15:48
Avatar van roy PHP gevorderde @vage: value heeft daar geen waarde
Offline nemesiskoen - 27/06/2008 15:54
Avatar van nemesiskoen Gouden medaille

PHP expert
doe dan eens var_dump van value daar en laat dat eens zien, laat ook eens wat meer code zien en zeg ook eens waarvoor je het nodig hebt, want dit is kei onduidelijk. En value moet daar overigens wel een waarde hebben...
Offline roy - 27/06/2008 16:02 (laatste wijziging 27/06/2008 16:03)
Avatar van roy PHP gevorderde ok, hier de code en de uitvoer:
  1. <?
  2. for ($i=0; $i < count($aInterface); $i++) {
  3. foreach($aInterface[$i] as $key=>$value)
  4. {
  5. if(array_search($value,$aPage))
  6. {
  7. echo 1;
  8. var_dump($value).'<br />';
  9. echo 2;
  10. //echo 'Key: '.$key[$i].' Waarde: '.$value.'<br />';
  11. //echo $value.'en'.$page.'true<br />';
  12. }
  13. //echo 'Key: '.$key.' Waarde: '.$value.'<br />';
  14. }
  15. }
  16. ?>


uitvoer:
1string(0) "" 21string(0) "" 21string(0) "" 21string(0) "" 21string(0) "" 21string(0) "" 21string(0) "" 2


hij komt wel in het if-statement maar heeft geen waarde
Offline dirk_ve - 27/06/2008 17:11
Avatar van dirk_ve Nieuw lid array-search gebruiken? Geeft index van gevonden element terug.

http://be.php.n...search.php
Offline roy - 27/06/2008 17:14
Avatar van roy PHP gevorderde dat doe ik... ik vraag toch waarom het niet werkt..
Offline dirk_ve - 27/06/2008 18:01
Avatar van dirk_ve Nieuw lid Net ver genoeg gelezen.

Ik denk dat je fout zit in de if-voorwaarde. Als array_search als resultaat 0 weergeeft, telt dat ook als false.
  1. <?
  2. $aInterface = array();
  3. $aInterface[]=array("item2", "item3");
  4. $aPage = array("item1", "item3");
  5.  
  6.  
  7. for ($i=0; $i < count($aInterface); $i++) {
  8. foreach($aInterface[$i] as $key=>$value)
  9. {
  10. if($pos=array_search($value,$aPage)!==false)
  11. {
  12. echo " aInterface [$i][$key] staat in aPage[$pos]<br/>";
  13. }
  14. }
  15. }
  16. ?>
Offline roy - 28/06/2008 18:54 (laatste wijziging 28/06/2008 19:24)
Avatar van roy PHP gevorderde Met de volgende code probeer ik de waarde uit $aPage te lezen. Het gaat echter fout en ik begrijp niet zo goed waarom.
  1. <?PHP
  2. for ($i=0; $i < count($aInterface); $i++)
  3. {
  4. foreach($aInterface[$i] as $key=>$value)
  5. {
  6. if($pos=array_search($value,$aPage)!==false)
  7. {
  8. echo " aInterface [$i][$key] staat in aPage[$pos]".$aPage[$pos]."<br/>";
  9. }
  10. }
  11. }
  12. ?>


Hierbij de var_dump van $aPage:

array(13) { ["id"]=> string(1) "1" ["parent_id"]=> string(2) "51" ["extra_tekst"]=> string(203) "xx" ["title"]=> string(21) "xx" ["body_left"]=> string(585) "xx" ["body_right"]=> string(490) "xx" ["extra_img"]=> string(19) "STOCK.jpg" ["extra_tekst_small"]=> string(0) "" ["fade"]=> string(5) "false" ["isagroup"]=> string(5) "false" ["created"]=> string(10) "0000-00-00" ["deleted"]=> string(5) "false" ["language"]=> string(2) "nl" }

Hierbij de var_dump van $aInterface:

array(7) { [0]=> array(7) { ["id"]=> string(1) "7" ["tablename"]=> string(4) "page" ["column"]=> string(8) "infotext" ["label"]=> string(0) "" ["buildcommand"]=> string(0) "" ["values"]=> string(22) "wat informatieve tekst" ["sequencenumber"]=> string(1) "0" } [1]=> array(7) { ["id"]=> string(1) "6" ["tablename"]=> string(4) "page" ["column"]=> string(8) "language" ["label"]=> string(4) "Taal" ["buildcommand"]=> string(13) "definedselect" ["values"]=> string(5) "nl,en" ["sequencenumber"]=> string(1) "1" } [2]=> array(7) { ["id"]=> string(1) "1" ["tablename"]=> string(4) "page" ["column"]=> string(5) "title" ["label"]=> string(5) "Titel" ["buildcommand"]=> string(9) "textfield" ["values"]=> string(0) "" ["sequencenumber"]=> string(1) "2" } [3]=> array(7) { ["id"]=> string(1) "2" ["tablename"]=> string(4) "page" ["column"]=> string(9) "body_left" ["label"]=> string(9) "Body_left" ["buildcommand"]=> string(8) "textarea" ["values"]=> string(0) "" ["sequencenumber"]=> string(1) "3" } [4]=> array(7) { ["id"]=> string(1) "3" ["tablename"]=> string(4) "page" ["column"]=> string(9) "extra_img" ["label"]=> string(7) "Plaatje" ["buildcommand"]=> string(8) "imagebox" ["values"]=> string(0) "" ["sequencenumber"]=> string(1) "4" } [5]=> array(7) { ["id"]=> string(1) "5" ["tablename"]=> string(4) "page" ["column"]=> string(11) "extra_tekst" ["label"]=> string(11) "Extra tekst" ["buildcommand"]=> string(9) "textfield" ["values"]=> string(0) "" ["sequencenumber"]=> string(1) "5" } [6]=> array(7) { ["id"]=> string(1) "4" ["tablename"]=> string(4) "page" ["column"]=> string(16) "extra_tekst_smal" ["label"]=> string(19) "Tekst onder plaatje" ["buildcommand"]=> string(9) "textfield" ["values"]=> string(0) "" ["sequencenumber"]=> string(1) "6" } }


Dit is de echo van het if-statement:
aInterface [0][label] staat in aPage[1]
aInterface [0][buildcommand] staat in aPage[1]
aInterface [1][sequencenumber] staat in aPage[1]
aInterface [2][id] staat in aPage[1]
aInterface [2][values] staat in aPage[1]
aInterface [3][values] staat in aPage[1]
aInterface [4][values] staat in aPage[1]
aInterface [5][values] staat in aPage[1]
aInterface [6][values] staat in aPage[1]

Dus in aIterfacesheet staat column => body_left, dan moet ie in aPage de waarde erbij zoeken..
Hiermee kan ik een array maken met de buildcommands en de daarbij behorende waardes.



Het lijkt misschien een beetje veel, maar ik zie dit graag opgelost..

Hopende op een helpende reactie,
Roy
Offline dirk_ve - 28/06/2008 20:37
Avatar van dirk_ve Nieuw lid Ik zie niet waar de fout zit maar ik vermoed dat het probleem in de arrays zit.
Ik testte met onderstaande code
  1. <?php
  2. $aInterface = array();
  3. $aInterface[]=array("id"=>"1","jan"=>"", "piet"=>"item3");
  4. $aInterface[]=array("id"=>"1","jan"=>"xx", "piet"=>"item3");
  5. $aPage = array("id"=>"1", "parent_id"=> "51", "extra_tekst"=> "xx", "title"=> "xx", "body_left"=> "xx");
  6. var_dump ($aInterface);
  7.  
  8. for ($i=0; $i < count($aInterface); $i++) {
  9. foreach($aInterface[$i] as $key=>$value)
  10. {
  11. $pos=array_search($value,$aPage);
  12.  
  13. if($pos!==false)
  14. {
  15. echo " aInterface [$i][$key] staat in aPage[$pos] = ".$aPage[$pos]."<br/>";
  16. }
  17. }
  18. }
  19. ?>

en dat gaf als resultaat:
aInterface [0][id] staat in aPage[id] = 1
aInterface [1][id] staat in aPage[id] = 1
aInterface [1][jan] staat in aPage[extra_tekst] = xx

In jouw resultaat is $pos = 1 wat gek is vermits er geen enkel key is met die waarde in de dumps.

Overigens is er mogelijk nog een probleem. Met array_search vindt hij alleen de eerste keer dat de zoekwaarde voorkomt. Misschien eens kijken naar array_keys()
Offline roy - 28/06/2008 20:42
Avatar van roy PHP gevorderde Eigenlijk wil ik alleenmaar kijken of de 'column' uit aIterfacesheet voorkomt in aPage..

het werkt nog niet:(
Offline dirk_ve - 28/06/2008 21:00
Avatar van dirk_ve Nieuw lid Dat is natuurlijk iets anders
  1. <?php
  2. $aInterface = array();
  3. $aInterface[]=array("id"=>"1","jan"=>"", "piet"=>"item3", "column"=>"title");
  4. $aInterface[]=array("id"=>"2","jan"=>"xx", "piet"=>"item3", "column"=>"body_left");
  5. $aPage = array("id"=>"1", "parent_id"=> "51", "extra_tekst"=> "xx", "title"=> "Dit is titel", "body_left"=> "Dit is body_left");
  6.  
  7. for ($i=0; $i < count($aInterface); $i++) {
  8.  
  9. if (array_key_exists($aInterface[$i]["column"],$aPage))
  10. {
  11. $pos = $aInterface[$i]["column"];
  12. echo $aPage[$pos]."<br>";
  13. }
  14. }
  15. ?>
Offline roy - 29/06/2008 16:02 (laatste wijziging 29/06/2008 16:03)
Avatar van roy PHP gevorderde Hoe kan je eenvoudig een waarde aan een multidimensionale array toevoegen?? het gaat om $aInterface.

dit wil ik toevoegen:
["Valueis"]=> string(16) "een lange tekst"

Hoe weet je waar je de waarde moet toevoegen?
Offline nemesiskoen - 29/06/2008 16:08
Avatar van nemesiskoen Gouden medaille

PHP expert
$aInterace[$je_key]["Valuis"] = "je waarde";
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.379s