Re: Removing Items from an Array

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

 



could Alan give samples about the input and expected output of the black box?
then we can consider implement it.

On 10/13/05, Alan Lord <lord_alan@xxxxxxxxxxx> wrote:
> Thanks for the replies gents.
>
> I have cludged together something from your solutions but it isn't yet
> working. I've been staring at multi-dim arrays all day and am getting
> tired, so I'll carry on tomorrow.
>
> Thanks again,
>
> Alan
>
> > -----Original Message-----
> > From: Jochem Maas [mailto:jochem@xxxxxxxxxxxxx]
> > Sent: 12 October 2005 19:18
> > To: tg-php@xxxxxxxxxxxxxxxxxxxxxx
> > Cc: php-general@xxxxxxxxxxxxx; lord_alan@xxxxxxxxxxx
> > Subject: Re:  Removing Items from an Array
> >
> > 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.
> > >
> >
> >
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

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



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux