Re: [PHP] Removing Items from an Array

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

tg-php@xxxxxxxxxxxxxxxxxxxxxx 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


[Index of Archives]     [PHP Home]     [PHP Users]     [PHP Database Programming]     [PHP Install]     [Kernel Newbies]     [Yosemite Forum]     [PHP Books]

  Powered by Linux