首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP关联数组使用

PHP关联数组使用
EN

Stack Overflow用户
提问于 2017-01-09 18:36:15
回答 1查看 75关注 0票数 0

我目前正在学习PHP (初学者编程),我被困在试图为以下基本问题找到解决方案.

这是一个“拆除炸弹”的游戏,下面的规则只适用于下一个割线:

如果你切断一根白色电缆,你就不能切断白色或黑色电缆。如果你剪一根红色的电缆,你必须剪一根绿色的,如果你剪一根黑色的电缆,它不允许切割一根白色、绿色或橙色的电缆--如果你剪一根橙色的电缆,你应该剪一条红色或黑色的电缆--如果你剪一根绿色的电缆,你必须剪一条橙色或白色的电缆--如果你切割一根紫色的电缆,你不能剪一根紫色的、绿色的、橙色的或白色的电缆。

输入如下..。

白色,红色,绿色,白色

因此,我将这些数据排列成一个关联数组,其中包含了有效的下一个裁剪。我将输入字符串转换为数组。如何使用这个关联数组来检查输入数组中的下一个线切割是否有效?

代码语言:javascript
复制
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‘键中,如果是这样的话,转到下一个输入并继续检查。如果它们都匹配到相应键中的值,炸弹就会被拆除。如果没有,“砰”。

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-09 18:50:16

如果你使用Array(),那就容易多了!

代码语言:javascript
复制
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'));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41554666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档