2016-04-25 3 views
0

私は36個のチェックボックスを持っています...私はこれを呼びます。 このようにラベル付けされています。私は今そのポストから2新しい変数=細目作ることができますどのようにこの変数の配列の特定の部分

$checks = $_POST['ck'] 
$vars = array(
       'ck1' => 'Demo', 
       'ck2' => 'Demo2', 
       'ck3' => 'Demo3', 
       'ck4' => 'Demo4', 
       'ck5' => 'Demo5', 
       'ck6' => 'Demo6', 
       'ck7' => 'Demo7', 
       'ck8' => 'Demo8', 
       'ck9' => 'Demo9', 
       'ck10' => 'Demo10', 

       ); 


      foreach($vars as $key=>$default) { 
       $checks[$key] = !empty($checks[$key]) ? $default : ''; 
      } 

などと呼ば

<input type='checkbox' value='1' name='ck[]'> 

。例えば 、その後、

$CH1 = checks[1] - checks[6]; 
$ch2 = checks[6] - checks[10]; 

そして、

どのように私はこの

$checks[1] . '<br>' . $checks[2] and so on.... 

UPDATEのような...それはリストと壊れる$CH1中の数字がある場合、それはどこで行うことができます***

$vars = array(
       '1' => 'Desktop', 
       '2' => 'Laptop Only', 
       '3' => 'Laptop/Dock', 
       '4' => 'Laptop Case', 
       '5' => 'Desk Phone', 
       '6' => 'Monitor', 
       '7' => 'Printer Access', 
       '8' => 'Printer - Personal', 
       '9' => 'Email(phone)', 
       '10' => 'Office 365', 
       '11' => 'Sharepoint', 
       '12' => 'Fax Fwd', 
       '13' => 'Adobe DC', 
       '14' => 'Apacheta', 
       '15' => 'Brightree', 
       '16' => 'TeamDME', 
       '17' => 'DirectView', 
       '18' => 'RingCentral', 
       '19' => 'Faxage', 
       '20' => 'Google Docs', 
       '21' => 'Badge Access', 
       '22' => 'Title Plate', 
       '23' => 'Bis Cards', 
       '24' => 'Travel', 
       '25' => 'Exp Reports', 
       '26' => 'Order Pads', 
       '27' => 'Demo Trilogy', 
       '28' => 'Stickers', 
       '29' => 'APS', 
       '30' => 'CBSS', 
       '31' => 'Conexis', 
       '32' => 'Evenfy', 
       '33' => 'Inventory', 
       '34' => 'AMEX', 
       '35' => 'Fuel Card', 
       '36' => 'Vehicle' 
       ); 


      foreach($vars as $key=>$default) { 
       $checks[$key] = !empty($checks[$key]) ? $default : ''; 
      } 

私が$ checksをエコーすると、配列は..と表示されませんnチェックされた名前。

+0

'print_r($ checks)'や 'var_dump($ checks)'を使って配列をエコーすることはできません。 – Barmar

答えて

2

あなたはdinamically値を読み取るしようとしている場合は、あなたが既に持っている名前のキー値を構築することができます:あなたはarray_sliceを使用する場合があります

$num_a = 1; 
$num_b = 6; 

$CH1 = checks['ck' . $num_a] - checks['ck' . $num_b]; 
+0

- 私はPHPを介してですか?私は例としてそれを使用していただけです – KevinM1990112qwq

+0

このコードは無効です。 – trincot

+0

@ KevinM1990112qwqあなたがしようとしたことをコピーしました。ポイントは、アレイのキーを即座に構築できることです。 – SanF

0

:今

$CH1 = array_slice($checks, 0, 6); 

を$ CH1は、最初の6つのチェックのみを含む配列になります。次の10件を取得するには:

$CH2 = array_slice($checks, 6, 10); 

...などです。あなたがそれらのいずれかが数値であるかどうかを確認したい場合は、is_numericを使用

foreach($CH1 as $chk) { 
    // 
} 

foreach($CH1 as $chk) { 
    if (is_numeric($chk)) echo $chk . "<br>"; 
} 

することができます

その後、別の配列を使用してあなたのようにそれらをループするだろうことができますまたフィルタ条件に基づく配列。あなたが$チェック配列から空の要素を排除したいとしましょう:

$filtered = array_filter($checks, function ($chk) { return !empty($chk); }); 

を...以下のように、

echo implode('<br>', $filtered); 

最後に、あなたがチェックされたあなたの$ varsの配列要素のみから抜け出すためにarray_intersect_keyを使用することができます:そして今、出力別の行に各エントリを持つ配列をフィルタリングこと

ユーザーが値1、5、10、とのチェックボックスを選択した場合
$result = array_intersect_key($vars, array_flip($_POST['ck'])); 

ので、$結果配列は次のようになります。

array (
    1 => 'Desktop', 
    5 => 'Desk Phone', 
    20 => 'Google Docs', 
) 

eval.inでご覧ください。

これらのアイデアが皆さんにとって参考になると思います。

+0

あなたは私の更新を見てみることができます....今何が起こっているのか分かりません。 – KevinM1990112qwq

+0

配列をエコーすると、その結果が得られます。代わりに、 'echo implode( '、'、$ checks);' ...あなたが必要とするものではなく、もっと近いものになります。 – trincot

+0

私がそれをするとき、私はちょうど "、" – KevinM1990112qwq

関連する問題