0 レビュー
5 回答
PHP1つの文字列に複数の値
私はこのような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データには1つの値があり、$ listkeyデータには3つ以上の値が必要なので、このような配列を使用してみました。
$listkey = array("aaa", "bbb", "ccc", "ddd");
しかし、試してみると、GET apikey = aaaまたはbbbを含めても、得られる応答は失敗します。この問題を解決するための適切な提案はありますか?
ありがとう
わからない
0
レビュー
答え :
解決策:
in_array()
を使用する必要があります。ドキュメントを参照してください。
<?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);
}
?>
わからない
0
レビュー
答え :
解決策:
if ($apikey == $listkey) {
それが機能しない理由です。文字列と配列を比較しようとしています。反復またはin_array()PHP関数のいずれかを使用できます。
if ( in_array($apikey,$listkey) ) {
後者の方が単純なようです。$listkey配列に$apikey文字列と等しい値が含まれているかどうかをチェックします。
厳密でない場合、関数がfalse trueとして返される可能性があるため、3番目のパラメータ「true」をin_arrayに追加する必要がある場合があります。
わからない
0
レビュー
答え :
解決策:
in_array()メソッドを使用できます。以下の例が役立ちます。
<?php
$listkey = array("aaa", "bbb", "ccc", "ddd");
if (in_array($apikey, $listkey))
{
echo "Match found";
}
else
{
echo "Match not found";
}
?>
わからない
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);
}
これはあなたに役立ちます
ありがとう
わからない
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()
(すでに回答があります)を使用して、コードをもう少しきれいに保つこともできます。ただし、効率は少し劣ります。ただし、配列が小さい場合は、大きな違いはありません。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。