1

注: 何かを HTML に解析する方法には興味がありません。私はすでにそれを知っています。このシナリオでは、サイトから HTML を抽出しており、複数の選択によって生成されるすべての異なるキーと値の配列を作成する最善の方法を見つけようとしています。

値を取得するために、<select><option>フェッチする場所でページを変換しようとしています。このデータは配列に転送されます。name=""value=""

<select name="example">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
</select>

与えるでしょう:

array(array('example' => 1),
      array('example' => 2),
      array('example' => 3))

ただし、私の場合は複数の が存在する可能<select>性があるため、これらの値を取り、その配列で可能なすべての組み合わせを作成するロジックが必要です。これらを、2 つの同じキーで値が異なる 4 つの配列を持つ配列として取得したいと考えています。

<select name="example">
    <option value="1">1</option>
    <option value="2">2</option>
</select>
<select name="second">
    <option value="1">1</option>
    <option value="2">2</option>
</select>

次のようになります。

array(array('example' => 1,
            'second'  => 1),
      array('example' => 1,
            'second'  => 2),
      array('example' => 2,
            'second'  => 1),
      array('example' => 2,
            'second'  => 2))

これらの配列を作成するには、php のどの方法がより理想的でしょうか? 私が考えることができる唯一の方法は、互いにいくつかのループです。<select>このソリューションをスケーラブルにして、できるだけ多くのユーザーと連携できるようにしたいと考えています。

4

2 に答える 2

0

このようにキーを組み合わせてみませんか?

$buildqueryarray=array();
$buildqueryarray[]=$_POST['example1'];
$buildqueryarray[]=$_POST['example2'];
$buildqueryarray[]=$_POST['example3'];
$buildqueryarray[]=$_POST['example4'];

$query="";
foreach($buildqueryarray as $k=>$v){
   $query=$k."=".$v."&";
}

$query=substr($query,0,-1);

次に、最終的に、指定された $_POST リクエストに応じてクエリを構築します。どの $_POST フィールドが存在するかわからないため、これらを buildqueryarray に追加するだけです。

于 2013-08-07T14:13:46.633 に答える
0

とに単純に変更するexampleのが最も簡単です。そこに着いたら、これを行うことができます:example[]secondsecond[]

$array = array();
$select1 = $_POST['example'];
$select2 = $_POST['second'];
array_push($array, ["example" => $select1[0], "second" => $select2[0]]);
array_push($array, ["example" => $select1[1], "second" => $select2[0]]);
array_push($array, ["example" => $select1[0], "second" => $select2[1]]);
array_push($array, ["example" => $select1[1], "second" => $select2[1]]);

配列$arrayには、必要なものが正確に含まれるようになりました。

ただし、実際の組み合わせを取得するには、次のリンクに示されているように、Math_Combinatorics クラスを使用できます。

http://pyrus.sourceforge.net/Math_Combinatorics.html

次のようにします。

$combinatorics = new Math_Combinatorics;
$a = $combinatorics->combinations(array(
    "example" => 2,
    "second" => 2,
    ), 2);

$ax 配列が含まれるようになり、それぞれが入力した数値の一意の 2 つの数値の組み合わせで構成されます。その後、それらをインデックスに使用できます。ハードコーディングされたバージョンに配置した 0 と 1 の代わりに、その配列のインデックスを含めるだけです。

于 2013-08-07T14:19:53.767 に答える