|
Posted by tg-php on 10/02/88 11:34
In the examples I saw, when you used $new_array = $value (without the []), you weren't going to get a proper copy of the array, as multiple people stated.
I'm curious why I didn't see (or maybe I just missed it) something like this:
$old_array = array('one', 'two', 'three', 'four');
$new_array = $old_array;
?
If you use a foreach() loop, you definitely need to use []:
foreach ($old_array as $value) {
$new_array[] = $value;
}
You'll loose all your key associations unless you do:
foreach ($old_array as $key => $value) {
$new_array[$key] = $value;
}
If you want to destroy your keys, you can use the first example of a foreach() or you can also use:
$new_array = array_values($old_array);
I'm lazy so I don't tend to pre-define variable types although I should probably get into the practice when there's a security need to do so.
So what was the original question again? hah
-TG
= = = Original message = = =
What I said was that arrays can be handled two different ways for loops.
1] By assigning the variable prior to the loop [i.e., $new_array= array();]
2] Or, by using inside the loop: $new_array[]= $value
Either one works. I've found, when the loop has lots of fancy stuff involving the $new_array, it is useful to go ahead
a assign it before starting the loop.
Kilbride, James wrote:
> <?php
>
> $old_array= array('one','two','three','four');
> $new_array= array();
>
> foreach($old_array as $value)
>
> $new_array= $value;
>
> echo "$new_array";
> ?>
>
> The result of the echo is "four". Doing the same above with the [] after
> new_array returns the right result, a new array.(outputs Array). So what
> exactly where you saying 'Taint so' Al? I'm confused since Jochem's
> email about how to properly copy an array seems correct.
>
> James Kilbride
>
>
>>-----Original Message-----
>>From: Al [mailto:news@ridersite.org]
>>Sent: Wednesday, December 14, 2005 10:47 AM
>>To: php-general@lists.php.net
>>Subject: Re: [PHP] Re: Declaring arrays? Good practice?
>>
>>Jochem Maas wrote:
>>
>>>Al wrote:
>>>
>>>
>>>>However....
>>>>
>>>>For loops:
>>>>
>>>>$new_array= array();
>>>>
>>>>foreach($old array as $value)
>>>>
>>>> $new_array= $value:
>>>>
>>>>
>>>>Otherwise, all you'll get it the last assignment of
>>
>>$new_array as a
>>
>>>>variable, not an array.
>>>
>>>
>>>which is exactly what you get if yuou run the code above -
>>
>>after the
>>
>>>foreach loop $new_array will be set to the value of the
>>
>>last item of
>>
>>>$old_array.
>>>
>>>regardless of whether you init the var you still have to use the
>>>square-bracket notation to add items to the array.
>>>
>>>
>>>>You can also use;
>>>>
>>>>foreach($old array as $value)
>>>>
>>>> $new_array[]= $value:
>>>>
>>>>
>>>>But sometimes, if the expression is a bit fancy in the
>>
>>loop and you
>>
>>>>are using $keys, it is easy to make a mistake.
>>>>
>>>>Al..........
>>>>
>>>>Michael Hulse wrote:
>>>>
>>>>
>>>>>Sorry if this question sounds noobish:
>>>>>
>>>>>$foo = array(); // Declare first, good practice.
>>>>>$foo = array('one', 'two', 'three');
>>>>>
>>>>>Using above as example, is it good to always declare the
>>
>>array first?
>>
>>>>>I usually/always declare my arrays first, but sometimes I
>>
>>get a bit
>>
>>>>>confused... for example:
>>>>>
>>>>>function give_foo()
>>>>> $the_foo = array(); // Declare first, good practice.
>>>>> $the_foo = array('one', 'two', 'three');
>>>>> // Do some stuff here...
>>>>> return $the_foo;
>>>>>
>>>>>$foo = give_foo(); // Declare $foo also?
>>>>>
>>>>>So, should I declare $foo as array and then give it the
>>
>>value of the
>>
>>>>>function? Example:
>>>>>
>>>>>$foo = array(); // Declare first, good practice.
>>>>>$foo = give_foo();
>>>>>
>>>>>That seems kinda redundant. Thoughts?
>>>>>
>>>>>Sorry if this is a stupid question... I am self-taught, and I am
>>>>>trying to shake all my bad coding habits.
>>>>
>>>>
>>>>
>>Taint so Jochem. Try it.
>>
>>--
>>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
___________________________________________________________
Sent by ePrompter, the premier email notification software.
Free download at http://www.ePrompter.com.
Navigation:
[Reply to this message]
|