2017-08-23 21 views
0

変数に変換したい名前の配列があります。これらはデータベースから生成されたテストの名前です(新しいテストが追加された場合、新しいインデックスが配列に追加されます)、私たちのテストは定期的に更新されるので、変数をハードコードしたくないそれらを動的に生成したいデータベースから動的PHP変数を作成する

私はこのコードを試してみた:

私の目的は、動的変数を作成し、6人のいずれかを持っていた場合、例えば、取られて、テストの各インスタンスのためにそれらに追加することです
$data = array(); 
foreach($tests as $v) { 
    $$v = ${}; 
    array_push($data, $v); 
} 

私たちのインスタントテストでは、変数 'instant'の値は6になります。ありがとう!

***** ***** UPDATE イムハードコーディングされたので、同じよう際にすべての作品、これらの変数を使用してmorris.jsチャートを移入しようとしている:これは私を与える

$pos = 0; 
$neg = 0; 
$pen = 0; 
$cont = 0; 
$misc = 0; 
foreach ($data as $item) { 
    if ($item['result'] === 'Positive') { 
    $pos++; 
    } elseif ($item['result'] === 'Negative') { 
    $neg++; 
    } elseif ($item['result'] === 'Pending') { 
    $pen++; 
    } elseif ($item['result'] === 'Contact the Clinic') { 
    $cont++; 
    } else { 
    $misc++; 
    } 
} 

$res = array("Positive"=>$pos, "Negative"=>$neg, "Pending"=>$pen, "Contact the Clinic"=>$cont, "Misc"=>$misc); 
$data = json_encode($res); 

enter image description here

私は新しいテスト/結果セットが追加された場合、コードを手動で更新する必要はありませんので、データベースから動的にデータを取り込もうとしています。データに基づいて変数を動的に作成する方法: /*作成するynamic変数は、:*/

$vars = array(); 
foreach($tests as $k => $v) { 
    array_push($vars, $v); 
    $$v = extract($vars); 
/* Loop through each instance and create a count for all matching instances */ 
    foreach($data as $item){ 
    if($item['name'] === $k){ 
    ${$v}++; 
     } 
    } 
} 

は私にラベルを与えすぎない値を持たない:

{"Positive","Negative","Pending","Contact the Clinic","Misc"} 

イムあなたはmysqliのを使用している場合、現在

+0

これは実際のコードですか、それとも疑似コードですか? – Script47

+0

これは私が試したコードです。これまでのところ、多くの変数が手作業でコード化されています。 – Sam

+1

これらの変数は別に必要ですか。連想配列( '$ data [$ v] = x;')だけでは使えませんか? –

答えて

0

まあCodeIgniterの(最新版)乾杯を使用して、あなた

// your query stuff: 
$stmt->query($query); 
$data = $stmt->fetch_assoc(); 

// just for example data contains: 
// array('id'=>1,'name'=>'Andy') 

foreach($data as $field => $value) { 
    ${$field} = $value; 
} 

// then output: 
echo $name; // should output 'Andy'; 
関連する問題