Page 1 of 1

Search Keys in array of arrays

Posted: Mon Oct 25, 2004 5:15 am
by anjanesh

Code: Select all

$arr=array(
"Mainkey1"=>array("Name"=>"name1","Occurred"=>0),
"Mainkey2"=>array("Name"=>"name2","Occurred"=>0),
"Mainkey3"=>array("Name"=>"name3","Occurred"=>0),
"Mainkey4"=>array("Name"=>"name4","Occurred"=>0)
);
$arr["Mainkey3"]["Occurred"]=1;
print_r(array_keys($arr,"1"));
returns FALSE. How do search for keys in sub-arrays ?
Thanks

Posted: Mon Oct 25, 2004 8:20 am
by swdev
I assume you want to find the main key for all those arrays that have a valued for the 'Occurred' key equal to 1.

The [php_man]array_key[/php_man] function only searches a 1 dimensional array. Therefore you need to step through each main key, and use the array_key function on the resulting sub-array.

Code: Select all

<?php
  $arr=array(
    'Mainkey1'=>array('Name'=>'name1','Occurred'=>0),
    'Mainkey2'=>array('Name'=>'name2','Occurred'=>0),
    'Mainkey3'=>array('Name'=>'name3','Occurred'=>0),
    'Mainkey4'=>array('Name'=>'name4','Occurred'=>0)
    );

  $arr['Mainkey3']['Occurred']=1;

  foreach ($arr as $key => $new_array)
  {
    $found_array = array_keys($arr[$key], '1');
    if ( (is_array($found_array) == true) && (count($found_array) > 0) )
    {
      echo 'Found Main Array at Key ' . $key . ' Name = ' . $new_array['Name'] . ' Occured = ' . $new_array['Occurred'];
    }
  }
  
?>
Hope this helps

Posted: Tue Oct 26, 2004 11:10 am
by anjanesh
Thanks - I already did that - I was hoping for array_search or array_keys or some other fn to search in sub arrays too.