首页 \ 问答 \ 最好不要用完列表索引(Best way not to run out of list index)

最好不要用完列表索引(Best way not to run out of list index)

假设我有2D列表,我想检查前一个/下一个元素是否等于某个东西。 确保我不会访问list[-1][-1]list[len + 1][len + 1]什么?

这是我正在尝试做的一个例子:

if list[y + 1][x] == value and list[y - 1][x] == value:
    do something
elif list[y][x + 1] == value and list[y][x - 1] == value:
    do something else
... # end so on

除了做以下事情,我看不到任何其他选项:

if y - 1 > 0 and y + 1 < len(list) and x - 1 > 0 and x + 1 < len(list[y]):

哪个看起来不对......


Let's say I have 2D list and I want to do a check if previous/next element equals something. What is the best way to make sure that I will not access list[-1][-1] or list[len + 1][len + 1]?

Here's an example of what I'm trying to do:

if list[y + 1][x] == value and list[y - 1][x] == value:
    do something
elif list[y][x + 1] == value and list[y][x - 1] == value:
    do something else
... # end so on

I can't see any other options except for doing:

if y - 1 > 0 and y + 1 < len(list) and x - 1 > 0 and x + 1 < len(list[y]):

Which doesn't seem right...


原文:https://stackoverflow.com/questions/11813574
更新时间:2022-01-25 06:01

最满意答案

假设用户的名称存储在名为name的数据库列中,您可以将此值保存到会话变量并将其显示给用户,如下所示:

登录代码:

<?php
if(isset($_POST['login'])){
    include("koneksi.php");

    $username   = $_POST['username'];
    $password   = md5($_POST['password']);
    $level      = $_POST['level'];

    $query = mysqli_query($koneksi, "SELECT * FROM users WHERE username='$username' AND password='$password'");
    if(mysqli_num_rows($query) == 0){
        echo '<div class="alert alert-danger">Upss...!!! Login gagal.</div>';
    }else{
        $row = mysqli_fetch_assoc($query);

        if($row['level'] == 1 && $level == 1){
            $_SESSION['username']=$username;
            $_SESSION['level']='admin';
            $_SESSION['name']=$row['name'];
            header("Location: user.php");
        }else if($row['level'] == 2 && $level == 2){
            $_SESSION['username']=$username;
            $_SESSION['level']='dosen';
            $_SESSION['name']=$row['name'];
            header("Location: user.php");
        }else if($row['level'] == 3 && $level == 3){
            $_SESSION['username']=$username;
            $_SESSION['level']='mahasiswa';
            $_SESSION['name']=$row['name'];
            header("Location: user.php");
        }else{
            echo '<div class="alert alert-danger">Upss...!!! Login gagal.</div>';
        }
    }
}
?>

显示代码:

<div class="login">
    <p>Login Succes</p>
    <p>Username: <?php echo $_SESSION['username']; ?><br>
    Name: <?php echo $_SESSION['name']; ?><br>
    Level: <?php echo $_SESSION['level']; ?></p>
    <p><a href="logout.php" class="btn btn-primary" onclick="return confirm('are you sure?')">Log out</a></p>
</div>

现在,如果用户的名称实际存储在2列中,例如first_namelast_name ,那么您可以将其保存到会话中,如下所示:

$_SESSION['name']=$row['first_name'].' '.$row['last_name'];

Assuming the user's name is stored in a database column called name, you could save this value to a session variable and display it to the user like so:

Login code:

<?php
if(isset($_POST['login'])){
    include("koneksi.php");

    $username   = $_POST['username'];
    $password   = md5($_POST['password']);
    $level      = $_POST['level'];

    $query = mysqli_query($koneksi, "SELECT * FROM users WHERE username='$username' AND password='$password'");
    if(mysqli_num_rows($query) == 0){
        echo '<div class="alert alert-danger">Upss...!!! Login gagal.</div>';
    }else{
        $row = mysqli_fetch_assoc($query);

        if($row['level'] == 1 && $level == 1){
            $_SESSION['username']=$username;
            $_SESSION['level']='admin';
            $_SESSION['name']=$row['name'];
            header("Location: user.php");
        }else if($row['level'] == 2 && $level == 2){
            $_SESSION['username']=$username;
            $_SESSION['level']='dosen';
            $_SESSION['name']=$row['name'];
            header("Location: user.php");
        }else if($row['level'] == 3 && $level == 3){
            $_SESSION['username']=$username;
            $_SESSION['level']='mahasiswa';
            $_SESSION['name']=$row['name'];
            header("Location: user.php");
        }else{
            echo '<div class="alert alert-danger">Upss...!!! Login gagal.</div>';
        }
    }
}
?>

Display code:

<div class="login">
    <p>Login Succes</p>
    <p>Username: <?php echo $_SESSION['username']; ?><br>
    Name: <?php echo $_SESSION['name']; ?><br>
    Level: <?php echo $_SESSION['level']; ?></p>
    <p><a href="logout.php" class="btn btn-primary" onclick="return confirm('are you sure?')">Log out</a></p>
</div>

Now, if the user's name is actually stored in 2 columns, for example first_name and last_name, then you could save it to the session like so:

$_SESSION['name']=$row['first_name'].' '.$row['last_name'];

相关问答

更多