Aisha
Aisha

Reputation: 247

loop through an array and change the value of another array at particular index

I am trying to change values of one array while checking values of another array. I have an array $arr whose values will be checked. Here it is:

$arr = array("Saturday", "Sunday");

$checkArr is an array which contains 7 values as "0", each number I assume is a week day. here it is:

$checkArr = array(0,0,0,0,0,0,0);

What I am trying to achieve is, I will check each value of $arr using for loop and if value at particular index matches particular day then change the value of "$checkArr" at particular index. In the code below, I am using code count($arr) because in actual I have two arrays of $arr;

Code:

 for($i= 0; $i < count($arr); $i++){ 
                    $checkArr = array(0,0,0,0,0,0,0);
                    if($arr[$i] == "Monday" ){ $checkArr[0] = 1; }
                    elseif($arr[$i] == "Tuesday" ){ $checkArr[1] = 1; }
                    elseif($arr[$i] == "Wednesday"){ $checkArr[2] = 1; }
                    elseif($arr[$i] == "Thursday"){ $checkArr[3] = 1; } 
                    elseif($arr[$i] == "Friday"){ $checkArr[4] = 1; } 
                        elseif($arr[$i] == "Saturday" ){  $checkArr[5] = 1;  } 
                    elseif($arr[$i] == "Sunday" ){ $checkArr[6] = 1; } 

                }
                print_r($checkArr);

Original Code:

  foreach($officeDetails as $key=>$value){ 
                $str = $value['days'];
                $arr = explode(",", $str);

                $checkArr = array(0,0,0,0,0,0,0);
                for($i= 0; $i < count($arr); $i++){

                    if($arr[$i] == "Monday" ){ $checkArr[0] == 1; }
                    elseif($arr[$i] == "Tuesday" ){ $checkArr[1] = 1; }
                    elseif($arr[$i] == "Wednesday"){ $checkArr[2] = 1; }
                    elseif($arr[$i] == "Thursday"){ $checkArr[3] = 1; } 
                    elseif($arr[$i] == "Friday"){ $checkArr[4] = 1; } 
                        elseif($arr[$i] == "Saturday" ){$checkArr[5] == 1; } 
                    elseif($arr[$i] == "Sunday" ){ $checkArr[6] = 1; } 
                    print_r($checkArr);
                }
   } 

But the problem is, its not changing the value of particular index of $checkArr. I know I am missing something here. Can anybody please help? I will be very thankful.

Kind Regards

Upvotes: 0

Views: 225

Answers (3)

Ravinder Reddy
Ravinder Reddy

Reputation: 3879

This is totally different approach. Have a look and test if it is giving the out put that you are expecting.

$officeDetails[0]['days'] = "Saturday,Sunday";
$officeDetails[1]['days'] = "Monday,Friday";
foreach($officeDetails as $key=>$value){
    $checkArr = array(0,0,0,0,0,0,0);
    $str = $value['days'];
    if (strpos($str, 'Monday') !== false) { $checkArr[0] = 1;}
    if(strpos($str, 'Tuesday') !== false ){ $checkArr[1] = 1; }
    if(strpos($str, 'Wednesday') !== false){ $checkArr[2] = 1; }
    if(strpos($str, 'Thursday') !== false){ $checkArr[3] = 1; }
    if(strpos($str, 'Friday') !== false){ $checkArr[4] = 1; }
    if(strpos($str, 'Saturday') !== false){$checkArr[5] = 1; }
    if(strpos($str, 'Sunday') !== false ){ $checkArr[6] = 1; }
    print_r($checkArr);
}

Output :

Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 1
[6] => 1
)
Array
(
[0] => 1
[1] => 0
[2] => 0
[3] => 0
[4] => 1
[5] => 0
[6] => 0
)

Upvotes: 0

Caleb Nance
Caleb Nance

Reputation: 712

you had the line: $checkArr = array(0,0,0,0,0,0,0); inside the for loop, so it was resetting it every time.. take a look at the code below, having the array outside of the for loop, makes it work.

For Code:

$arr = array("Saturday", "Sunday");
$checkArr = array(0,0,0,0,0,0,0);
for($i= 0; $i < count($arr); $i++){
  if($arr[$i] == "Monday" ){ $checkArr[0] = 1; }
  elseif($arr[$i] == "Tuesday" ){ $checkArr[1] = 1; }
  elseif($arr[$i] == "Wednesday"){ $checkArr[2] = 1; }
  elseif($arr[$i] == "Thursday"){ $checkArr[3] = 1; }
  elseif($arr[$i] == "Friday"){ $checkArr[4] = 1; }
  elseif($arr[$i] == "Saturday" ){  $checkArr[5] = 1;  }
  elseif($arr[$i] == "Sunday" ){ $checkArr[6] = 1; }
}

print_r($checkArr);

For Original Code:

$checkArr = [];
foreach($officeDetails as $key=>$value){ 
  $str = $value['days'];
  $arr = explode(",", $str);
  $checkArr[$key] = array(0,0,0,0,0,0,0);

  for($i= 0; $i < count($arr); $i++){
    if($arr[$i] == "Monday" ){ $checkArr[$key][0] == 1; }
    elseif($arr[$i] == "Tuesday" ){ $checkArr[$key][1] = 1; }
    elseif($arr[$i] == "Wednesday"){ $checkArr[$key][2] = 1; }
    elseif($arr[$i] == "Thursday"){ $checkArr[$key][3] = 1; } 
    elseif($arr[$i] == "Friday"){ $checkArr[$key][4] = 1; } 
    elseif($arr[$i] == "Saturday" ){$checkArr[$key][5] == 1; } 
    elseif($arr[$i] == "Sunday" ){ $checkArr[$key][6] = 1; } 
  }
}

print_r($checkArr);

Upvotes: 2

Ilia Ivanov
Ilia Ivanov

Reputation: 84

You have reset $checkArr in for loop.

<?php
$arr = array("Saturday", "Sunday");
$checkArr = array(0,0,0,0,0,0,0);
foreach($arr as $val){ 
                if($val == "Monday" ){ $checkArr[0] = 1; }
                elseif($val == "Tuesday" ){ $checkArr[1] = 1; }
                elseif($val  == "Wednesday"){ $checkArr[2] = 1; }
                elseif($val  == "Thursday"){ $checkArr[3] = 1; } 
                elseif($val  == "Friday"){ $checkArr[4] = 1; } 
                elseif($val == "Saturday" ){  $checkArr[5] = 1;  } 
                elseif($val == "Sunday" ){ $checkArr[6] = 1; } 

}
print_r($checkArr);
?>

Upvotes: 0

Related Questions