Thanks for the addition Jochem..  one reason I post here, even if it's a basic 
example, is because if there's a better way or a chance to learn something new, 
I want to have that opportunity.  Thanks again!

-TG

= = = Original message = = =

Id like to continue where TG left off ...

hth.

[EMAIL PROTECTED] wrote:
> If I understand what you're asking, then maybe this will help:
> 
> $arrset1 = array("Apples" => 3, "Oranges" => 5, "Apricots" => 1);
> $arrset2 = array("Couches" => 6, "Chairs" => 2, "Benches" => 5);
> 
> $alldataarr["Fruits"] = $arrset1;
> $alldataarr["Furniture"] = $arrset2;
> 
> Say we want to remove "Chairs", and let's do it the hard way:
> 
> foreach ($alldataarr as $key => $data) 
>   foreach ($data as $subkey => $subdata) 
>     if ($subkey == "Chairs) 
>       unset($alldataarr[$key][$subkey]);
>     
>   
> 
> 
> using foreach $arr as $key => $data you can get the key/index name as well as 
> the actual value stored in that part of your array.  Then all you have to do 
> is refer back up to the main array using the current $key/$subkey values as 
> your indexes.
> 

$filter = array(
~'Fruits'    => array('Apples' => 1, 'Oranges' => 1),
~'Furniture' => array('Couches' => 1, 'Chairs' => 1),
);

$alldataarr = array();
$alldataarr["Fruits"] = array("Apples" => 3, "Oranges" => 5, "Apricots" => 1);
$alldataarr["Furniture"] = array("Couches" => 6, "Chairs" => 2, "Benches" => 5);

foreach ($alldataarr as $key => $data) 
    if (!isset($filter[$key]) 
~// we want it all;.
~continue;
    
    $alldataarr[$key]= array_intersect_keys($data, $filter[$key]);



// heres one I prepared earlier:


/**
  * array_intersect_keys()
  *                    ^--- the internal function (php5.x+?) has no 's'
  *
  * returns the all the items in the 1st array whose keys are found in any of 
the other arrays
  *
  * @return array()
  */
function array_intersect_keys()

     $args           = func_get_args();
     $originalArray  = $args[0];
     $res            = array();

     if(!is_array($originalArray))  return $res; 

     for($i=1;$i<count($args);$i++) 
         if(!is_array($args[$i]))  continue; 
         foreach ($args[$i] as $key => $data) 
             if (isset($originalArray[$key]) && !isset($res[$key])) 
                 $res[$key] = $originalArray[$key];
             
         
     

     return $res;





> 
> Basic example, but I think you can modify this to work with what you're doing.
> 
> Let me know if you have any questions about this example.
> 
> -TG
> 
> 
> 
> = = = Original message = = =
> 
> Hi all,
> 
> I'm really struggling here! I have a large, multi-dimensional array that
> I want to "clean-up" a bit before committing to a database.
> 
> I want to remove quite a bit of the array but using the KEYs not the
> values. I know the keys I want to keep and I know the keys I want to get
> rid of. I want to keep the structure and sequence of the array in tact. 
> 
> All of the array traversing functions in PHP seem to either: only work
> on the values, or do not allow the removal of elements of the array!
> 
> Can anyone offer a clue bat to a tired old array walker!
> 
> Thanks
> 
> Alan
> 
> 
> ___________________________________________________________
> Sent by ePrompter, the premier email notification software.
> Free download at http://www.ePrompter.com.
>


___________________________________________________________
Sent by ePrompter, the premier email notification software.
Free download at http://www.ePrompter.com.

-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to