Forums / Developer / Associative arrays not working?

Associative arrays not working?

Author Message

Oliver Frommel

Thursday 07 August 2008 6:49:11 am

Hello,

yesterday I tried to extend the Collected information Export extension (http://projects.ez.no/cie) to export the ezoption datatype. In that course I discovered some strange behaviour where I could not reference an associative array as I thought I could.

class eZOptionHandler extends BaseHandler{
       function exportAttribute(&$attribute, $seperationChar) {
             echo $array['DataInt'];
             ...

that last statement never produced any output, whereas var_dump($attribute) shows:

object(ezinformationcollectionattribute)(10) {
  ["PersistentDataDirty"]=>
  bool(false)
  ["Content"]=>
  NULL
  ["ID"]=>
  string(5) "15178"
  ["InformationCollectionID"]=>
  string(5) "11191"
  ["ContentClassAttributeID"]=>
  string(4) "1005"
  ["ContentObjectAttributeID"]=>
  &string(6) "172424"
  ["ContentObjectID"]=>
  &string(5) "20112"
  ["DataText"]=>
  string(0) ""
  ["DataInt"]=>
  string(1) "3"
  ["DataFloat"]=>
  string(1) "0"
}

I have worked around that problem by iterating over the keys of the structure:

foreach ($attribute as $key => $value) {
      if ($key == 'DataInt') {
           $option_value = $value;
      }
}

I remember somewhere in the back of my mind to have read something about variables/datatypes getting "loaded" from the db only "on demand". Otherwise I have no idea what is going on here. Can anonye explain?

Thanks
Oliver

André R.

Thursday 07 August 2008 7:00:48 am

From the var_dump ypu can see that this is a object of type eZInformationCollectionAttribute, not a array.

The clean way to get the variable would be (this is supported by all classes that are meant to be used inside a template):

$dataInt = $attribute->attribute('data_int');

Or the regular way:

$dataInt = $attribute->DataInt;

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom

Oliver Frommel

Thursday 07 August 2008 8:36:29 am

This is great, thanks.

Maybe you can also explain how I get the description of the options that are found in the content object instance belonging to the information collection? The only thing I could find was a text attribute filled with an XML fragment like this:

                // <ezoption>
                // <name>company_size</name>
                // <options>
                //    <option id="0"
                //           additional_price="0">0-10</option>
                //   <option id="1"
                //          additional_price="0">10-20</option>
                //     <option id="2"
                //          additional_price="0">20-30</option>
                //    <option id="3"
                //            additional_price="0">30-40</option>
                //   </options>
                // </ezoption>
                //

I was able to parse it but it is a bit cumbersome. I thought there was a way just looking the description up via an (associative) array?

Thanks
Oliver

André R.

Thursday 07 August 2008 9:13:55 am

Some template code for selection attribute that might help:

{def $portion_array            = $node.data_map.portions_type.content
     $portion_type             = ''}
{foreach $node.data_map.portions_type.class_content.options as $option}
    {if $portion_array|contains( $option.identifier )}{set $portion_type = $option.name|wash(xhtml)}{/if}
{/foreach}

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom

eZ debug

Timing: Jan 19 2025 11:40:37
Script start
Timing: Jan 19 2025 11:40:37
Module start 'content'
Timing: Jan 19 2025 11:40:38
Module end 'content'
Timing: Jan 19 2025 11:40:38
Script end

Main resources:

Total runtime1.1833 sec
Peak memory usage4,096.0000 KB
Database Queries197

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0069 588.9531180.8359
Module start 'content' 0.00690.9728 769.7891565.1250
Module end 'content' 0.97980.2034 1,334.9141336.7500
Script end 1.1832  1,671.6641 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00410.3442210.0002
Check MTime0.00160.1341210.0001
Mysql Total
Database connection0.00080.069210.0008
Mysqli_queries1.100192.96811970.0056
Looping result0.00240.20591950.0000
Template Total1.142596.620.5713
Template load0.00190.162820.0010
Template processing1.140696.391020.5703
Template load and register function0.00020.014010.0002
states
state_id_array0.00140.119710.0014
state_identifier_array0.00120.104320.0006
Override
Cache load0.00160.1344310.0001
Sytem overhead
Fetch class attribute can translate value0.00250.207230.0008
Fetch class attribute name0.00190.157150.0004
XML
Image XML parsing0.00140.115530.0005
class_abstraction
Instantiating content class attribute0.00000.001460.0000
General
dbfile0.00570.4804280.0002
String conversion0.00000.000730.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
4content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
11content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
7content/datatype/view/ezxmltags/literal.tpl<No override>extension/community/design/standard/templates/content/datatype/view/ezxmltags/literal.tplEdit templateOverride template
2content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
2content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 28
 Number of unique templates used: 7

Time used to render debug report: 0.0002 secs