0

これに対する答えを見つけようと、1週間近くグーグルで検索しましたが、これまでのところ、あまり運がありません. 多分私は正しい質問をしていません。

私がやろうとしているのは、単一の PHP スクリプトを取得して、入力された URL から複数のキーと値の両方をテストし、必要なコンテンツ/機能を提供することです。ジョブを完了するために複数のファイルを使用する必要はありません。

私の最初の考えは、 $_GET を使用して情報を処理することでしたが、スクリプトが最初のキーでしか機能しないときに行き詰まりました。

<?php
if(isset($_GET['key1'])){
   $key1 = $_GET['key1'];
   echo "Key 1 is - " .$key1. " - There is no other data.";
}
elseif(isset($_GET['key2'])){
   $key2 = $_GET['key2'];
   echo "Key 2 is - " .$key2. " - There is no other data.";
}
else {
   echo "No data provided";
}
?>

2番目のキーでは機能しないため、覚えている方法を書き出す必要があったため、上記が正しいことを願っています。

次に、別の方法を試しました。

<?php
if(isset($_GET['key1'],$_GET['key2'])){
   if($_GET['key1']){
      $key1 = $_GET['key1'];
      echo "Key 1 is - " .$key1. " - There is no other data.";
   }
   elseif($_GET['key2']){
      $key2 = $_GET['key2'];
      echo "Key 2 is - " .$key2. " - There is no other data.";
   }
   else {
      echo "No data provided";
   }
}
?>

内部サーバーエラーが発生しただけで、今は立ち往生しています。

私の質問は、他のキーを含める必要なく、同じスクリプト内で個々のキーと複数のキーと値の両方を処理するにはどうすればよいですか? コードが Linux サーバーと Windows サーバーの両方で実行されるように、純粋な PHP も目指しています。つまり、.htaccess を使用して URL の書き換えを行うことはできません。

注!: 上記は単なるサンプルです。実際のコードは、タスクを実行してコンテンツを出力する関数にリンクされます。

目的は、example.com/?key1=value1 example.com/?key2=value1 などの URL を許可し、各キーが個別の機能を実行できるようにすることです。

4

3 に答える 3

1

私があなたを理解したかどうかはわかりませんが、これはどうですか?

foreach($_GET as $key => $value) {
    if(!empty($value)) {
        switch($key) {
            case 'key1':
                // do stuff for key1
                break;
            case 'key2':
                // do stuff for key1
                break;
        }
    } else {
        // handle if key is not set
    }
}
于 2012-10-28T10:11:12.350 に答える
0

私があなたを正しく理解していれば、あなたが望むものは次のとおりです。

if(isset($_GET['key1']) && isset($_GET['key2'])){
    //both keys are set
} elseif(isset($_GET['key1'])) {
    //only key1 is set
} elseif(isset($_GET['key2'])){
    //only key2 is set
} else {
    //no valid combinations found
}

次のように、特定性の降順でステートメントの順序を書き留めます。

if(isset($_GET['key1'])) {
    //only key1 is set
} elseif(isset($_GET['key2'])){
    //only key2 is set
} elseif(isset($_GET['key1']) && isset($_GET['key2'])){
    //both keys are set
} else {
    //no valid combinations found
}

最初の条件で一致するため、設定されている両方のキーの条件がトリガーされることはありません。

于 2012-10-28T09:51:18.747 に答える
0

この機能を使用できます:

extract( $_REQUEST, EXTR_PREFIX_ALL, 'f' );

http://fr2.php.net/manual/en/function.extract.php

于 2012-10-28T09:54:26.593 に答える