循环遍历一个数组并更改特定索引处另一个数组的值


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

我正在尝试更改一个数组的值,同时检查另一个数组的值。我有一个数组$arr其值将被检查。在这里:

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

$checkArr是一个数组,其中包含 7 个值作为"0",我假设每个数字都是一个工作日。 这是:

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

我试图实现的是,我将使用 for 循环检查$arr的每个值,如果特定索引的值与特定日期匹配,则更改特定索引处"$checkArr"的值。在下面的代码中,我正在使用代码计数($arr),因为实际上我有两个$arr数组;

法典:

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

原始代码:

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

但问题是,它不会改变$checkArr特定指数的值。我知道我在这里错过了一些东西。有人可以帮忙吗?我将非常感激。

亲切问候

你有一行:$checkArr = array(0,0,0,0,0,0,0);在for循环中,所以它每次都重置它..看看下面的代码,将数组放在for循环之外,使其工作。

对于代码:

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

对于原始代码:

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

您已在 for 循环中重置$checkArr。

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

这是完全不同的方法。看看并测试它是否给出了您期望的输出。

$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);
}

输出:

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
)