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