waarde in andere array (Opgelost)
roy - 27/06/2008 14:24
PHP 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
roy - 27/06/2008 14:35
PHP gevorderde
die returned ook een bool toch
MiST - 27/06/2008 14:38
Lid
Array_search() returnt geen bool, kijk in de handleiding ;)
Deze methode geeft de key terug in je array ;)
roy - 27/06/2008 14:40
PHP gevorderde
if(Array_search($value,$aPage))
{
// en dan?
}
???
roy - 27/06/2008 15:14
PHP gevorderde
if(Array_search($value,$aPage))
{
$value;
}
kan niet:S en dat wil ik wel
vinTage - 27/06/2008 15:22 (laatste wijziging 27/06/2008 15:25)
Nieuw lid
if(in_array(....))
{
$index = array_search(...)
}
edit:
<?php
$array = array("aap","noot","vis","vuur");
$index = array_search("ss", $array); // niks
$index = array_search("noot", $array); // 1
<?php
$array = array ( "aap" , "noot" , "vis" , "vuur" ) ;
nemesiskoen - 27/06/2008 15:26 (laatste wijziging 27/06/2008 15:27)
PHP expert
euh... je moet wel iets met $value doen...
if(in_array($value,$aPage))
{
echo $value;
}
roy - 27/06/2008 15:48
PHP gevorderde
@vage: value heeft daar geen waarde
roy - 27/06/2008 16:02 (laatste wijziging 27/06/2008 16:03)
PHP gevorderde
ok, hier de code en de uitvoer:
<?
for ($i=0; $i < count($aInterface); $i++) {
foreach($aInterface[$i] as $key=>$value)
{
if(array_search($value,$aPage))
{
echo 1;
var_dump($value).'<br />';
echo 2;
//echo 'Key: '.$key[$i].' Waarde: '.$value.'<br />';
//echo $value.'en'.$page.'true<br />';
}
//echo 'Key: '.$key.' Waarde: '.$value.'<br />';
}
}
?>
<?
for ( $i = 0 ; $i < count ( $aInterface ) ; $i ++ ) { foreach ( $aInterface [ $i ] as $key => $value )
{
{
//echo 'Key: '.$key[$i].' Waarde: '.$value.'<br />';
//echo $value.'en'.$page.'true<br />';
}
//echo 'Key: '.$key.' Waarde: '.$value.'<br />';
}
}
?>
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
roy - 27/06/2008 17:14
PHP gevorderde
dat doe ik... ik vraag toch waarom het niet werkt..
dirk_ve - 27/06/2008 18:01
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.
<?
$aInterface = array();
$aInterface[]=array("item2", "item3");
$aPage = array("item1", "item3");
for ($i=0; $i < count($aInterface); $i++) {
foreach($aInterface[$i] as $key=>$value)
{
if($pos=array_search($value,$aPage)!==false)
{
echo " aInterface [$i][$key] staat in aPage[$pos]<br/>";
}
}
}
?>
<?
$aInterface [ ] = array ( "item2" , "item3" ) ; $aPage = array ( "item1" , "item3" ) ;
for ( $i = 0 ; $i < count ( $aInterface ) ; $i ++ ) { foreach ( $aInterface [ $i ] as $key => $value )
{
{
echo " aInterface [$i ][$key ] staat in aPage[$pos ]<br/>" ; }
}
}
?>
roy - 28/06/2008 18:54 (laatste wijziging 28/06/2008 19:24)
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.
<?PHP
for ($i=0; $i < count($aInterface); $i++)
{
foreach($aInterface[$i] as $key=>$value)
{
if($pos=array_search($value,$aPage)!==false)
{
echo " aInterface [$i][$key] staat in aPage[$pos]".$aPage[$pos]."<br/>";
}
}
}
?>
<?PHP
for ( $i = 0 ; $i < count ( $aInterface ) ; $i ++ ) {
foreach ( $aInterface [ $i ] as $key => $value )
{
{
echo " aInterface [$i ][$key ] staat in aPage[$pos ]" . $aPage [ $pos ] . "<br/>" ; }
}
}
?>
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
dirk_ve - 28/06/2008 20:37
Nieuw lid
Ik zie niet waar de fout zit maar ik vermoed dat het probleem in de arrays zit.
Ik testte met onderstaande code
<?php
$aInterface = array();
$aInterface[]=array("id"=>"1","jan"=>"", "piet"=>"item3");
$aInterface[]=array("id"=>"1","jan"=>"xx", "piet"=>"item3");
$aPage = array("id"=>"1", "parent_id"=> "51", "extra_tekst"=> "xx", "title"=> "xx", "body_left"=> "xx");
var_dump ($aInterface);
for ($i=0; $i < count($aInterface); $i++) {
foreach($aInterface[$i] as $key=>$value)
{
$pos=array_search($value,$aPage);
if($pos!==false)
{
echo " aInterface [$i][$key] staat in aPage[$pos] = ".$aPage[$pos]."<br/>";
}
}
}
?>
<?php
$aInterface [ ] = array ( "id" => "1" , "jan" => "" , "piet" => "item3" ) ; $aInterface [ ] = array ( "id" => "1" , "jan" => "xx" , "piet" => "item3" ) ; $aPage = array ( "id" => "1" , "parent_id" => "51" , "extra_tekst" => "xx" , "title" => "xx" , "body_left" => "xx" ) ;
for ( $i = 0 ; $i < count ( $aInterface ) ; $i ++ ) { foreach ( $aInterface [ $i ] as $key => $value )
{
if ( $pos !== false )
{
echo " aInterface [$i ][$key ] staat in aPage[$pos ] = " . $aPage [ $pos ] . "<br/>" ; }
}
}
?>
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()
roy - 28/06/2008 20:42
PHP gevorderde
Eigenlijk wil ik alleenmaar kijken of de 'column' uit aIterfacesheet voorkomt in aPage..
het werkt nog niet:(
dirk_ve - 28/06/2008 21:00
Nieuw lid
Dat is natuurlijk iets anders
<?php
$aInterface = array();
$aInterface[]=array("id"=>"1","jan"=>"", "piet"=>"item3", "column"=>"title");
$aInterface[]=array("id"=>"2","jan"=>"xx", "piet"=>"item3", "column"=>"body_left");
$aPage = array("id"=>"1", "parent_id"=> "51", "extra_tekst"=> "xx", "title"=> "Dit is titel", "body_left"=> "Dit is body_left");
for ($i=0; $i < count($aInterface); $i++) {
if (array_key_exists($aInterface[$i]["column"],$aPage))
{
$pos = $aInterface[$i]["column"];
echo $aPage[$pos]."<br>";
}
}
?>
<?php
$aInterface [ ] = array ( "id" => "1" , "jan" => "" , "piet" => "item3" , "column" => "title" ) ; $aInterface [ ] = array ( "id" => "2" , "jan" => "xx" , "piet" => "item3" , "column" => "body_left" ) ; $aPage = array ( "id" => "1" , "parent_id" => "51" , "extra_tekst" => "xx" , "title" => "Dit is titel" , "body_left" => "Dit is body_left" ) ;
for ( $i = 0 ; $i < count ( $aInterface ) ; $i ++ ) {
{
$pos = $aInterface [ $i ] [ "column" ] ;
echo $aPage [ $pos ] . "<br>" ; }
}
?>
roy - 29/06/2008 16:02 (laatste wijziging 29/06/2008 16:03)
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?
Gesponsorde links
Dit onderwerp is gesloten .