Professional Web Applications Themes

PHP's References - PHP Development

I'm trying to create a stack of class objects; but on cycling through them with 'foreach' I am unable to update their properties. What is the correct method for this?...

  1. #1

    Default PHP's References

    I'm trying to create a stack of class objects; but on cycling through them
    with 'foreach' I am unable to update their properties. What is the correct
    method for this?


    Guest

  2. #2

    Default Re: PHP's References

    [email]barryblues.no[/email] wrote:
    > I'm trying to create a stack of class objects; but on cycling through them
    > with 'foreach' I am unable to update their properties. What is the correct
    > method for this?
    You get copies with foreach; use the key value to access the
    original array:

    foreach ($foo as $bar->$baz)
    {
    $foo[$bar] = new MyClass($baz->Name, $baz->WidgetCount);
    }

    HTH

    You really could have thought of this one yourself and tried the code, you
    know!

    matty Guest

  3. #3

    Default Re: PHP's References

    [email]barryblues.no[/email] schrieb:
    > I'm trying to create a stack of class objects; but on cycling through them
    > with 'foreach' I am unable to update their properties. What is the correct
    > method for this?
    foreach() uses a copy of the array. Use somthing like:

    <?php
    foreach($arr as $key=>$val) {
    $arr[$key] = editfunc($val);
    }
    ?>

    or for very large arrays

    <?php
    reset($arr);
    while(list($key,$val) = each($arr)) {
    $arr[$key] = editfunc($val);
    }
    ?>

    Regards
    Thomas

    Thomas Weinert Guest

  4. #4

    Default Re: PHP's References

    Thanks to both Thomas and matty; I actually was unaware of the second form
    of 'foreach'. So ended up doing something like the following (which even
    keeps me from having to use references.) I'd like to ask one more thing; is
    the call to array_keys, neglible in effeciency compared to using the second
    form of 'foreach'?

    class Foo
    {
    var $some_value;

    function Bar()
    {
    $this->some_value = "def";
    }

    function Foo()
    {
    $this->some_value = "abc";
    }
    }

    $class_stack = array();
    array_push( $class_stack, new Foo() );
    array_push( $class_stack, new Foo() );

    // $some_value is set to "abc"

    foreach( $class_stack as $cls=>$key )
    {
    $class_stack[ $cls ]->Bar();
    }

    // $some_value now equals "def"


    Guest

Similar Threads

  1. Web References
    By sendhil in forum ASP.NET Web Services
    Replies: 5
    Last Post: December 11th, 08:34 PM
  2. Getting references
    By John in forum Ruby
    Replies: 2
    Last Post: November 3rd, 07:35 AM
  3. ASP.net using UNC references and IIS 5.0
    By Erik Lindeblom in forum ASP.NET General
    Replies: 1
    Last Post: August 6th, 09:32 AM
  4. references help
    By slash in forum PERL Miscellaneous
    Replies: 6
    Last Post: July 24th, 11:33 PM
  5. references
    By Carl Furst in forum PHP Development
    Replies: 2
    Last Post: July 22nd, 04:14 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139