Reputation: 247
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
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
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
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