我正在尝试更改一个数组的值,同时检查另一个数组的值。我有一个数组$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
)