[PHP] Assign values in foreach-loop

2005-09-07 Thread Sabine

Hello to all,

is it possible to assign values to the array for which I do the 
foreach-loop?


foreach ($_SESSION['arr1'] as $arr1) {
   foreach ($_SESSION['arr2'] as $arr2) {
   if ($arr1['id'] == $arr2['id']) {
   $arr1['selected'] = true;
   }
   }   
}


I think $arr1 is only a temp-var, so the assignment won't reflect on 
$_SESSION['arr1'] . Is that right?
Surely I can do it with a for-loop, but those arrays are a bit complex 
and a foreach would be much easier to read.


Thanks in advance for your answers
Sabine

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Assign values in foreach-loop

2005-09-07 Thread Edward Vermillion

Sabine wrote:

Hello to all,

is it possible to assign values to the array for which I do the 
foreach-loop?


foreach ($_SESSION['arr1'] as $arr1) {
   foreach ($_SESSION['arr2'] as $arr2) {
   if ($arr1['id'] == $arr2['id']) {
   $arr1['selected'] = true;
   }
   }   }

I think $arr1 is only a temp-var, so the assignment won't reflect on 
$_SESSION['arr1'] . Is that right?
Surely I can do it with a for-loop, but those arrays are a bit complex 
and a foreach would be much easier to read.


Thanks in advance for your answers
Sabine



Short answer is no.

foreach works on a copy of the array, so any chnges you make inside the 
foreach loop are lost once you're outside of it. Although *inside* the 
foreach the changes *are* valid.


What you can do is:

$newArray = array();

foreach ($_SESSION['arr1'] as $arr1) {
foreach ($_SESSION['arr2'] as $arr2) {
if ($arr1['id'] == $arr2['id']) {
$newArray['selected'] = true;
}
}   }

Then reference $newArray instead of $arr1.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Assign values in foreach-loop

2005-09-07 Thread Jordan Miller

Hello,

You simply need the $key variable, then you can set a new value for  
$arr[$key] for each array element:

?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $key = $value) {
   $arr[$key] = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?


http://www.php.net/foreach
If you have PHP 5, you can perhaps more efficiently do this:


As of PHP 5, you can easily modify array's elements by preceding  
$value with . This will assign reference instead of copying the  
value.


?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
   $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?






Jordan




On Sep 7, 2005, at 12:14 PM, Sabine wrote:




Hello to all,

is it possible to assign values to the array for which I do the  
foreach-loop?


foreach ($_SESSION['arr1'] as $arr1) {
   foreach ($_SESSION['arr2'] as $arr2) {
   if ($arr1['id'] == $arr2['id']) {
   $arr1['selected'] = true;
   }
   }   }

I think $arr1 is only a temp-var, so the assignment won't reflect  
on $_SESSION['arr1'] . Is that right?
Surely I can do it with a for-loop, but those arrays are a bit  
complex and a foreach would be much easier to read.


Thanks in advance for your answers
Sabine

--
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



Re: [PHP] Assign values in foreach-loop

2005-09-07 Thread tg-php
Yeah, you can assign values, but you have to keep track of keys, so you'll want 
to use the = operator for foreach (pardon my reformatted, I feel naked without 
my braces):

foreach ($_SESSION['arr1'] as $key1 = $arr1)  {
foreach ($_SESSION['arr2'] as $key2 = $arr2) {
if ($arr1['id'] == $arr2['id']) {
# $arr1['selected'] = true;
$_SESSION['arr1'][$key1]['selected'] = true;
}
}
}

Is that what you were trying to do?

-TG




= = = Original message = = =

Hello to all,

is it possible to assign values to the array for which I do the 
foreach-loop?

foreach ($_SESSION['arr1'] as $arr1) 
foreach ($_SESSION['arr2'] as $arr2) 
if ($arr1['id'] == $arr2['id']) 
$arr1['selected'] = true;

   


I think $arr1 is only a temp-var, so the assignment won't reflect on 
$_SESSION['arr1'] . Is that right?
Surely I can do it with a for-loop, but those arrays are a bit complex 
and a foreach would be much easier to read.

Thanks in advance for your answers
Sabine

-- 
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.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Assign values in foreach-loop

2005-09-07 Thread Jordan Miller

sorry,

i didn't fully answer the questions... if i understand your  
multidimensional array correctly, your code should be something like:


foreach ($_SESSION['arr1'] as $key = $arr1) {
   foreach ($_SESSION['arr2'] as $arr2) {
   if ($arr1['id'] == $arr2['id']) {
   $_SESSION['arr1'][$key]['selected'] = true;
   }
   }   }

Jordan



On Sep 7, 2005, at 12:22 PM, Jordan Miller wrote:


foreach ($_SESSION['arr1'] as $arr1) {
   foreach ($_SESSION['arr2'] as $arr2) {
   if ($arr1['id'] == $arr2['id']) {
   $arr1['selected'] = true;
   }
   }   }




--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Assign values in foreach-loop: Problem solved

2005-09-07 Thread Sabine

Thanks a lot for your fast answers,

I'll do it like -TG and Jordan in his last post suggested!

Sabine

 Original-Nachricht 
Betreff:[PHP] Assign values in foreach-loop
Datum:  Wed, 07 Sep 2005 19:14:40 +0200
Von:Sabine [EMAIL PROTECTED]
Antwort an: [EMAIL PROTECTED]
An: PHP general php-general@lists.php.net



Hello to all,

is it possible to assign values to the array for which I do the 
foreach-loop?


foreach ($_SESSION['arr1'] as $arr1) {
  foreach ($_SESSION['arr2'] as $arr2) {
  if ($arr1['id'] == $arr2['id']) {
  $arr1['selected'] = true;
  }
  }   
}


I think $arr1 is only a temp-var, so the assignment won't reflect on 
$_SESSION['arr1'] . Is that right?
Surely I can do it with a for-loop, but those arrays are a bit complex 
and a foreach would be much easier to read.


Thanks in advance for your answers
Sabine

--
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



Re: [PHP] Assign values in foreach-loop

2005-09-07 Thread Edward Vermillion

Jordan Miller wrote:

Hello,

You simply need the $key variable, then you can set a new value for  
$arr[$key] for each array element:

?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $key = $value) {
   $arr[$key] = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?


http://www.php.net/foreach
If you have PHP 5, you can perhaps more efficiently do this:


As of PHP 5, you can easily modify array's elements by preceding  
$value with . This will assign reference instead of copying the  value.


?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
   $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?






Jordan


Or you can do it like that...

Totally brain-faded on the $key bit. I've been bitten by this so many 
times that it's just in my head that you can't permanently modify the array.


Cool stuff on the v5 referencing, I guess I'm gonna have to go back 
through the manual on everything and not just the new stuff.


Thanks!

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Assign values in foreach-loop

2005-09-07 Thread Gustav Wiberg


- Original Message - 
From: Sabine [EMAIL PROTECTED]

To: PHP general php-general@lists.php.net
Sent: Wednesday, September 07, 2005 7:14 PM
Subject: [PHP] Assign values in foreach-loop



Hello to all,

is it possible to assign values to the array for which I do the 
foreach-loop?


foreach ($_SESSION['arr1'] as $arr1) {
   foreach ($_SESSION['arr2'] as $arr2) {
   if ($arr1['id'] == $arr2['id']) {
   $arr1['selected'] = true;
   }
   }   }

I think $arr1 is only a temp-var, so the assignment won't reflect on 
$_SESSION['arr1'] . Is that right?
Surely I can do it with a for-loop, but those arrays are a bit complex and 
a foreach would be much easier to read.


Thanks in advance for your answers
Sabine

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



--
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.10.18/91 - Release Date: 2005-09-06



Hi there!

Why not set $_SESSION['arr1'] = true ?


foreach ($_SESSION['arr1'] as $arr1) {
   foreach ($_SESSION['arr2'] as $arr2) {
   if ($arr1['id'] == $arr2['id']) {
   $_SESSION['arr1'] = true;
   }
   }   }

I think $arr1 is only a temp-var, so the assignment won't reflect on 
$_SESSION['arr1'] . Is that right?


I might add that is not always a good thing to use true or false with 
sessions. Use 1 and 0 instead. (or two diffrent numbers or anything else but 
true or false)


/G
http://www.varupiraten.se/

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Assign values in foreach-loop

2005-09-07 Thread Jason Davidson
In case it hasnt been said already, as long as your array has numeric and 
consecutive keys, you could use 'for' instead of 'foreach'. 

Jason

On 9/7/05, Gustav Wiberg [EMAIL PROTECTED] wrote:
 
 
 - Original Message -
 From: Sabine [EMAIL PROTECTED]
 To: PHP general php-general@lists.php.net
 Sent: Wednesday, September 07, 2005 7:14 PM
 Subject: [PHP] Assign values in foreach-loop
 
 
  Hello to all,
 
  is it possible to assign values to the array for which I do the
  foreach-loop?
 
  foreach ($_SESSION['arr1'] as $arr1) {
  foreach ($_SESSION['arr2'] as $arr2) {
  if ($arr1['id'] == $arr2['id']) {
  $arr1['selected'] = true;
  }
  } }
 
  I think $arr1 is only a temp-var, so the assignment won't reflect on
  $_SESSION['arr1'] . Is that right?
  Surely I can do it with a for-loop, but those arrays are a bit complex 
 and
  a foreach would be much easier to read.
 
  Thanks in advance for your answers
  Sabine
 
  --
  PHP General Mailing List (http://www.php.net/)
  To unsubscribe, visit: http://www.php.net/unsub.php
 
 
 
  --
  No virus found in this incoming message.
  Checked by AVG Anti-Virus.
  Version: 7.0.344 / Virus Database: 267.10.18/91 - Release Date: 
 2005-09-06
 
 
 Hi there!
 
 Why not set $_SESSION['arr1'] = true ?
 
  foreach ($_SESSION['arr1'] as $arr1) {
  foreach ($_SESSION['arr2'] as $arr2) {
  if ($arr1['id'] == $arr2['id']) {
  $_SESSION['arr1'] = true;
  }
  } }
 
  I think $arr1 is only a temp-var, so the assignment won't reflect on
  $_SESSION['arr1'] . Is that right?
 
 I might add that is not always a good thing to use true or false with
 sessions. Use 1 and 0 instead. (or two diffrent numbers or anything else 
 but
 true or false)
 
 /G
 http://www.varupiraten.se/
 
 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php
 



Re: [PHP] Assign values in foreach-loop

2005-09-07 Thread Sabine

Thanks, Gustav for your answer.

I already solved my problem (see below) with help of other members of 
the list.

Gustav Wiberg schrieb:



- Original Message - From: Sabine [EMAIL PROTECTED]
To: PHP general php-general@lists.php.net
Sent: Wednesday, September 07, 2005 7:14 PM
Subject: [PHP] Assign values in foreach-loop



I might add that is not always a good thing to use true or false with 
sessions. Use 1 and 0 instead. (or two diffrent numbers or anything 
else but true or false)


Why? What is wrong with using true or false with sessions? What may happen?

Sabine



/G
http://www.varupiraten.se/



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php