0

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

3
  • I don't really get what you want to do. Please show what your current output is and what your are expecting to get Commented Mar 11, 2016 at 21:14
  • You're overwriting your array inside your for loop. Commented Mar 11, 2016 at 21:14
  • @C.Liddell you are right but I also tried it by putting it outside the loop and still its not working. Commented Mar 11, 2016 at 21:17

3 Answers 3

2

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);
Sign up to request clarification or add additional context in comments.

10 Comments

@Aisha Putting it within the loop is 'setting' that array variable all over again, so that is why you are getting only this as a result: "Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 1 )"
No, I am getting Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 ), no 1 in the array
@Aisha can you post the exact code you have from your script?
@C.Liddell I just added the original code in my question. please check it.
@Aisha can you provide the value of $officeDetails?
|
0

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);
?>

Comments

0

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
)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.