Re: [PHP] Arrays
[email protected] (Karl DeSaulniers)
| Newsgroups | php.general |
|---|---|
| Message-ID | <[email protected]> |
On Feb 26, 2013, at 10:35 PM, tamouse mailing lists wrote: > On Mon, Feb 25, 2013 at 9:51 PM, Karl DeSaulniers <[email protected] > > wrote: >> Never mind. I found a different function that reads out the >> children as well >> into the array. >> >> >> function xml_parse_into_assoc($data) { >> $p = xml_parser_create(); >> >> xml_parser_set_option($p, >> XML_OPTION_CASE_FOLDING, >> 0); >> xml_parser_set_option($p, >> XML_OPTION_SKIP_WHITE, >> 1); >> >> xml_parse_into_struct($p, $data, $vals, >> $index); >> xml_parser_free($p); >> >> $levels = array(null); >> >> foreach ($vals as $val) { >> if ($val['type'] == 'open' || >> $val['type'] == >> 'complete') { >> if (!array_key_exists($val['level'], >> $levels)) >> { >> $levels[$val['level']] = array(); >> } >> } >> >> $prevLevel =& $levels[$val['level'] - 1]; >> $parent = >> $prevLevel[sizeof($prevLevel)-1]; >> >> if ($val['type'] == 'open') { >> $val['children'] = array(); >> array_push(&$levels[$val['level']], >> $val); >> continue; >> } >> >> else if ($val['type'] == 'complete') { >> $parent['children'][$val['tag']] = >> $val['value']; >> } >> >> else if ($val['type'] == 'close') { >> $pop = >> array_pop($levels[$val['level']]); >> $tag = $pop['tag']; >> >> if ($parent) { >> if (!array_key_exists($tag, >> $parent['children'])) { >> $parent['children'][$tag] = >> $pop['children']; >> } >> else if >> (is_array($parent['children'][$tag])) { >> if(!isset($parent['children'] >> [$tag][0])) >> { >> $oldSingle = >> $parent['children'][$tag]; >> $parent['children'][$tag] = >> null; >> $parent['children'][$tag][] = >> $oldSingle; >> >> } >> $parent['children'][$tag][] = >> $pop['children']; >> } >> } >> else { >> return(array($pop['tag'] => >> $pop['children'])); >> } >> } >> >> $prevLevel[sizeof($prevLevel)-1] = >> $parent; >> } >> } >> >> >> $params = xml_parse_into_assoc($result);// >> $result = >> xml result from USPS api >> >> Original function by: jemptymethod at gmail dot com >> Duplicate names fix by: Anonymous (comment right above original >> function) >> >> Best, >> Karl >> >> >> >> On Feb 25, 2013, at 7:50 PM, Jim Lucas wrote: >> >>> On 02/25/2013 05:40 PM, Karl DeSaulniers wrote: >>>> >>>> Hi Guys/Gals, >>>> If I have an multidimensional array and it has items that have >>>> the same >>>> name in it, how do I get the values of each similar item? >>>> >>>> EG: >>>> >>>> specialservices => array( >>>> specialservice => array( >>>> serviceid => 1, >>>> servicename=> signature required, >>>> price => $4.95 >>>> ), >>>> secialservice => array( >>>> serviceid => 15, >>>> servicename => return receipt, >>>> price => $2.30 >>>> ) >>>> ) >>>> >>>> How do I get the prices for each? What would be the best way to >>>> do this? >>>> Can I utilize the serviceid to do this somehow? >>>> It is always going to be different per specialservice. >>>> >>>> TIA, >>>> >>>> Best, >>>> >>>> Karl DeSaulniers >>>> Design Drumm >>>> http://designdrumm.com >>>> >>>> >>> >>> This will never work. Your last array will always overwrite your >>> previous >>> array. >>> >>> Here is how I would suggest building it: >>> >>> >>> $items = array( >>> 1 => array( >>> serviceid => 1, >>> servicename=> signature required, >>> price => $4.95 >>> ), >>> 15 => array( >>> serviceid => 15, >>> servicename => return receipt, >>> price => $2.30 >>> ) >>> ) >>> >>> This will ensure that your first level indexes never overwrite >>> themselves. >>> >>> But, with that change made, then do this: >>> >>> foreach ( $items AS $item ) { >>> if ( array_key_exists('price', $item) ) { >>> echo $item['price']; >>> } else { >>> echo 'Item does not have a price set'; >>> } >>> } >>> >>> Resources: >>> http://php.net/foreach >>> http://php.net/array_key_exists >>> >>> -- >>> Jim Lucas >>> >>> http://www.cmsws.com/ >>> http://www.cmsws.com/examples/ >> >> >> Karl DeSaulniers >> Design Drumm >> http://designdrumm.com >> >> >> -- >> PHP General Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> > > Would this work for you? > http://us.php.net/manual/en/function.xml-parse-into-struct.php That is where I got this function. :) Comment 12 and 13 on that page. Yes it worked for me. Best, Karl DeSaulniers Design Drumm http://designdrumm.com