PHP 关联数组使用
PHP Associative Arrays Use
我目前正在学习 PHP(编程初学者)并且一直在尝试为以下基本问题找到解决方案...
这是一个 "bomb defuse" 游戏,以下规则仅适用于下一个线切割:
如果你剪白线,你就不能剪白线或黑线。
如果你剪了一根红色的电缆,你就必须剪一根绿色的
如果您剪断黑色电缆,则不允许剪断白色、绿色或橙色电缆
如果你剪了一根橙色的电缆,你应该剪一根红色或黑色的
如果你切绿色的,你必须切橙色或白色的
如果你剪紫色电缆,你就不能剪紫色、绿色、橙色或白色电缆
输入如下...
白红绿白
所以我将这些数据排列成一个关联数组,其中包含有效的下一次切割。我把输入字符串变成了一个数组。我如何使用这个关联数组来检查输入数组中的下一个线切割是否是有效切割?
function bombDefuseValidation($inputString) {
$input = $inputString;
$inputExplodedArray = explode(", ", $input);
//$inputExplodedArray = array('white', 'red', 'green', 'white');
$inputExplodedArrayLength = count($inputExplodedArray);
//Valid next cuts
$rules = array(
"white" => "red, green, orange, purple",
"red" => "green",
"black" => "red, purple, black",
"orange" => "red, black",
"green" => "orange, white",
"purple" => "red, black"
);
}
bombDefuseValidation('white, red, green, white');
我需要一种获取输入的方法,例如 'white',检查以下输入 ('red') 是否作为值存在于关联数组的 'white' 键中,如果是,则继续下一个输入并继续检查。如果它们都与相应键中的值匹配,则炸弹被拆除。如果没有,"BOOM".
感谢您的帮助!
如果你用Array()
,那就简单多了!
function bombDefuseValidation($inputArray) {
$inputExplodedArrayLength = count($inputArray);
//Valid next cuts
$rules = array(
"white" => array("red", "green", "orange", "purple"),
"red" => array("green"),
"black" => array("red", "purple", "black"),
"orange" => array("red", "black"),
"green" => array("orange", "white"),
"purple" => array("red", "black")
);
for ($i = 0; $i < $inputExplodedArrayLength-1 ; $i++) {
$temp = $rules[$inputArray[$i]];
if(!in_array($inputArray[$i+1], $temp)) {
$num = $i + 2;
print("Invalid Input no. {$num}");
return -1;
}
}
print("Valid Input");
return 0;
}
bombDefuseValidation(Array('white', 'red', 'green', 'white'));
我目前正在学习 PHP(编程初学者)并且一直在尝试为以下基本问题找到解决方案...
这是一个 "bomb defuse" 游戏,以下规则仅适用于下一个线切割:
如果你剪白线,你就不能剪白线或黑线。 如果你剪了一根红色的电缆,你就必须剪一根绿色的 如果您剪断黑色电缆,则不允许剪断白色、绿色或橙色电缆 如果你剪了一根橙色的电缆,你应该剪一根红色或黑色的 如果你切绿色的,你必须切橙色或白色的 如果你剪紫色电缆,你就不能剪紫色、绿色、橙色或白色电缆
输入如下...
白红绿白
所以我将这些数据排列成一个关联数组,其中包含有效的下一次切割。我把输入字符串变成了一个数组。我如何使用这个关联数组来检查输入数组中的下一个线切割是否是有效切割?
function bombDefuseValidation($inputString) {
$input = $inputString;
$inputExplodedArray = explode(", ", $input);
//$inputExplodedArray = array('white', 'red', 'green', 'white');
$inputExplodedArrayLength = count($inputExplodedArray);
//Valid next cuts
$rules = array(
"white" => "red, green, orange, purple",
"red" => "green",
"black" => "red, purple, black",
"orange" => "red, black",
"green" => "orange, white",
"purple" => "red, black"
);
}
bombDefuseValidation('white, red, green, white');
我需要一种获取输入的方法,例如 'white',检查以下输入 ('red') 是否作为值存在于关联数组的 'white' 键中,如果是,则继续下一个输入并继续检查。如果它们都与相应键中的值匹配,则炸弹被拆除。如果没有,"BOOM".
感谢您的帮助!
如果你用Array()
,那就简单多了!
function bombDefuseValidation($inputArray) {
$inputExplodedArrayLength = count($inputArray);
//Valid next cuts
$rules = array(
"white" => array("red", "green", "orange", "purple"),
"red" => array("green"),
"black" => array("red", "purple", "black"),
"orange" => array("red", "black"),
"green" => array("orange", "white"),
"purple" => array("red", "black")
);
for ($i = 0; $i < $inputExplodedArrayLength-1 ; $i++) {
$temp = $rules[$inputArray[$i]];
if(!in_array($inputArray[$i+1], $temp)) {
$num = $i + 2;
print("Invalid Input no. {$num}");
return -1;
}
}
print("Valid Input");
return 0;
}
bombDefuseValidation(Array('white', 'red', 'green', 'white'));