检查value是否在数组中并返回其余项

时间:2018-10-18 14:57:24

标签: php arrays multidimensional-array

下面是我拥有的数组

  [{
    "Email": "alsongdunstan2@gmail.com",
    "SecretKey": "e868f7b4c5b3a7d23cc746d24fdb65aad7a0d762",
    "SecretIv": "dd760185b148d4a59e0adf583b21b15b8d6d7e16"
}, {
    "Email": "sule@gmail.com",
    "SecretKey": "d36c88178041cc1942b068bbd6dd0f2a88681dfb",
    "SecretIv": "33ead1d0267e99eff90aac18a1c848fbcb1253b2"
}, {
    "Email": "alsongdunstan@gmail.com",
    "SecretKey": "45bf3e3dd6efb9022606c1ed095b033daf0a1d3d",
    "SecretIv": "74528bdb8418522d1ff1a37e4ca9db1e0dc160da"
}]

我希望能够搜索sule@gmail.com是否在上面的数组中。 然后返回secretkey和secretiv值。

下面的代码是我们想要做的

    <?php
include_once '../Includes/Secure.php';
include_once '../Includes/ConnectionInfo.php';

/*Acquiring the security class*/
$mSecure = new Includes\Secure;
$mConnectionInfo = new Includes\ConnectionInfo();
$mConnectionInfo->GetConnection();

$email ="sule@gmail.com";

if ($mConnectionInfo->conn){
    echo "is connected <br/>";

    $stmt2 = $mConnectionInfo->conn->prepare('SELECT email, secret_key, secret_iv FROM users');

    $work2 = $stmt2->execute();
    $returnedvalue = array();
    if ($work2){
        while($row = $stmt2->fetch(PDO::FETCH_ASSOC)){

            $secret_key = $row['secret_key'];
            $secret_iv = $row['secret_iv'];

            $secret_key = $mSecure->my_simple_crypt_key($row['secret_key'],'d','sha384');//encrypt with sha384

            $secret_iv = $mSecure->my_simple_crypt_key($row['secret_iv'],'d','sha384');//encrypt with sha384


            $decryptedemail = $mSecure->my_simple_crypt($row['email'],'d','sha384',$secret_key,$secret_iv);//encrypt with sha384

            $value = ["Email" => $decryptedemail, "SecretKey" => $secret_key, "SecretIv" => $secret_iv];
            array_push($returnedvalue, $value);
        }

        echo json_encode($returnedvalue);
        echo "<br/>";
        echo $email;

        if(in_array($email,$returnedvalue,TRUE)){
            echo "<br/> value exists";
        }
        else{
            echo "<br/> value doesnt exists<br/>";
        }
    }
}
?>

在如何检查该值是否存在以及如何检索与该值关联的其他元素方面需要一些帮助。

或者如果还有另一种方法,谢谢

1 个答案:

答案 0 :(得分:-1)

您应该像这样直接在PDO执行的输出上使用foreach循环

if ($mConnectionInfo->conn){

echo "is connected <br/>";

$stmt2 = $mConnectionInfo->conn->prepare('SELECT email, secret_key, secret_iv FROM users');
$stmt2 = execute();

foreach($stmt2 as $row){

    if($email == $mSecure->my_simple_crypt($row['email'],'d','sha384',$secret_key,$secret_iv);){

        $secret_key = $row['secret_key'];
        $secret_iv = $row['secret_iv'];
        $secret_iv = $mSecure->my_simple_crypt_key($row['secret_iv'],'d','sha384');//encrypt with sha384
        $decryptedemail = $mSecure->my_simple_crypt($row['email'],'d','sha384',$secret_key,$secret_iv);//encrypt with sha384
        $value = ["Email" => $decryptedemail, "SecretKey" => $secret_key, "SecretIv" => $secret_iv];

        array_push($returnedvalue, $secret_key);
        array_push($returnedvalue, $secret_iv);
        array_push($returnedvalue, $secret_iv);
        array_push($returnedvalue, $decryptedemail);
        array_push($returnedvalue, $value);
    }
}

    echo json_encode($returnedvalue);
    echo "<br/>";
    echo $email;

    if(in_array($email,$returnedvalue,TRUE)){
        echo "<br/> value exists";
    }
    else{
        echo "<br/> value doesnt exists<br/>";
    }
}

} ?>