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