PHP 1个字符串中的多个值

时间:2018-03-23 10:53:14

标签: php

我有像这样的PHP脚本

<?php
$listkey = "aaa";
$apikey = $_GET['apikey'];
    if ($apikey == $listkey) {
    $response["error"] = TRUE;
    $response["respon"] = "Success";
    echo json_encode($response);
    } else {
    $response["error"] = FALSE;
    $response["respon"] = "Failed";
    echo json_encode($response);
    }
?>

正如您所看到的,$ listkey数据有一个值,我希望$ listkey数据有两个以上的值,我尝试使用这样的数组。

$listkey = array("aaa", "bbb", "ccc", "ddd");

但是如果我尝试它,我得到的回复是FAILED,即使我已经包含GET apikey = aaa或bbb是否有任何合适的建议来解决这个问题?

由于

5 个答案:

答案 0 :(得分:1)

if ($apikey == $listkey) {

这就是为什么它不能工作,你试图将字符串与数组进行比较。您可以使用迭代或in_array()PHP函数。

if ( in_array($apikey,$listkey) ) {

后一个似乎更简单,它检查$ listkey数组是否包含一个等于$ apikey字符串的值。

您可能需要添加第三个参数&#34; true&#34;对于in_array,在非严格的情况下,函数可能返回false true。

http://php.net/manual/en/function.in-array.php

答案 1 :(得分:1)

您需要使用in_array(),请参阅the docs

<?php
$listkey = ["aaa", "bbb", "ccc"];
$apikey = $_GET['apikey'];

if (in_array($apikey, $listkey) {
    $response["error"] = TRUE;
    $response["respon"] = "Success";
    echo json_encode($response);
} else {
    $response["error"] = FALSE;
    $response["respon"] = "Failed";
    echo json_encode($response);
}
?>

答案 2 :(得分:0)

使用in_Array概念

请检查以下代码:

 <?php
 // $listkey = "aaa";
 $listkey = array("aaa", "bbb", "ccc", "ddd");

 $_GET['apikey'] = "aaa";


 if (in_array($_GET['apikey'], $listkey))
 {
   $response["error"] = TRUE;
   $response["respon"] = "Success";
   echo json_encode($response);
 }
 else
 {
    $response["error"] = FALSE;
    $response["respon"] = "Failed";
    echo json_encode($response);
 }

这对你有帮助

由于

答案 3 :(得分:0)

您需要将字符串与数组进行比较。你不能只是这样做:

if($string == $array)

会导致错误。

您可以遍历您的数组以使检查更有价值;

$matched = false;
//Iterate over array
foreach($listkey as $key){
  if($key == $apikey){
    $matched = true; //Set match to true
    break; //Stop looping as it's not necessary
  }
}

if ($matched) {
  $response["error"] = TRUE;
  $response["respon"] = "Success";
  echo json_encode($response);
} else {
  $response["error"] = FALSE;
  $response["respon"] = "Failed";
  echo json_encode($response);
}

- 您也可以使用in_array()(已有答案),这将使您的代码更加整洁。但是,效率稍低。如果它是一个小阵列,它不会真正产生很大的不同。

答案 4 :(得分:0)

你可以使用in_array()方法,下面的例子对你有用。

<?php
 $listkey = array("aaa", "bbb", "ccc", "ddd");
 if (in_array($apikey,  $listkey))
 {
   echo "Match found";
 }
 else
 {
 echo "Match not found";
 }
?>