2016-02-09 150 views
0

我正在開發一個項目,需要在PHP中使用PHP值創建數百個變量。我可以通過線,像這樣寫的每一行:for循環設置javascript變量=一個PHP變量

var M1 = <?php echo json_encode($$mn[0]); ?>; 
var M2 = <?php echo json_encode($$mn[1]); ?>; 
var M3 = <?php echo json_encode($$mn[2]); ?>; 

正如我說,有數百個這樣的,雖然,如果有可能在一個循環做,我會學習很感興趣。我已經搜遍遍了,找不到直接的答案。這很可能是不可能的。我是編程新手,仍然在學習某些代碼可以做什麼和不可以做什麼。

任何有關此主題的見解或方向將不勝感激!

如果這不是一個選項是否可以使用數組索引的JavaScript變量名?我爲JS和PHP創建了一個數組。 PHP的工作上面的罰款,但如果我嘗試使用數組索引像下面的JS,它打破:

var mcirc[0] = <?php echo json_encode($$mn[0]); ?>; 

我已經輸出了陣列和值正確地來了,但是當我運行此我得到的消息:

[object HTMLDivElement] 

而不是應顯示的實際值。

UPDATE

$ MN陣列:

for ($m1 = 1; $m1 < 6; $m1++) { 
    $mn[] = 'M'.$m1; 
} 

UPDATE

選擇SQL創建數組:

$sqlMC = "SELECT * FROM tblmaincircles"; 
$result = $conn->query($sqlMC); 

    while($row = $result->fetch_assoc()) { 
     $$row["mcID"]= $row["mcName"]; 
} 

爲MCID數組是這樣的:

M1 = "text1" 
M2 = "text2" 
M3 = "text3" 
M4 = "text4" 
M5 = "text5" 

UPDATE

最終結果所需的:

var M1 = "text1"; 
var M2 = "text2"; 
var M3 = "text3"; 
var M4 = "text4"; 
var M5 = "text5"; 

其中 「文本1,... 2,... 3,... 4,...,5」 是從MySQL數據庫來。

UPDATE

這裏是得到了這個工作的最終代碼:

$sqlMC = "SELECT mcID, mcName FROM tblmaincircles"; 
$result = $conn->query($sqlMC); 


    while($row = $result->fetch_assoc()) { 
     $mcID[] = $row["mcID"]; 
     $mcName[] = $row["mcName"]; 
} 


<?php for ($m1 = 0; $m1 <5; $m1++) { ?> 
    var <?php echo $mcID[$m1]; ?> = <?php echo json_encode($mcName[$m1]); ?>; 
<?php } ?> 
+0

變量?這是非常醜陋的。爲什麼不是一個數組? 'var M = <?php echo json_encode($ m_array); ?>'?而且這個$ mn'數組到底是什麼? –

+0

爲什麼要變量變量'$ mn'?爲什麼不'json_encode'整個'$ mn'? – frz3993

+0

@MarcB感謝您的意見。正如我所說我是新的和變量變量是我發現工作拉索引值。如果有更好的辦法,我全力以赴,但我寧願留在話題上。我已經更新了這個問題以包含'$ mn'數組。 –

回答

1

首先在您的查詢部分中,聲明一個變量來保存所需的結果。我假設您的表格中的M1mcIDtext1mcName。例如:

$sqlMC = "SELECT * FROM tblmaincircles"; 
$result = $conn->query($sqlMC); 

$mac = [];//or $mac = array(); Depends on your PHP version. 

while($row = $result->fetch_assoc()) { 
    $mac[$row["mcID"]] = $row["mcName"]; 
} 

然後,迭代通過$mac陣列foreach循環。我假設你在HTML中使用PHP代碼。 $key將是mcID$value將是mcName

//php tag for the foreach opening 
<?php foreach ($mac as $key => $value) { ?> 

    var <?php echo $key; ?> = <?php echo "'$value';"; ?> 

//php tag for the foreach closing 
<?php } ?> 

或者,如果你想使用javascript關聯數組。

var macJs = {}; 

<?php foreach ($mac as $key => $value) { ?> 

    macJs.<?php echo $key; ?> = <?php echo "'$value';"; ?> 

<?php } ?> 

而且你可以在JavaScript macJs.M1訪問元素這樣的。

+0

這非常接近我想要的!包含'$ mac [$ row [「mcID」]] = $ row [「mcname」];'的第一個代碼塊只存儲數組中的最後一個值。爲什麼它只返回數組中的最後一個值,而不是全部呢?我發現通過使用'var_dump'找到了這個地方,在那裏我收到了'array(size = 1)'M5'=> string'text5' –

+0

@CraigHowell,它不應該。除非所有行具有相同的'mcID'。 – frz3993

+0

我剛纔看了一下數據庫,都是單獨的'M1,M2,M3,M4,M5' –

2

簡而言之JSON爲可變

var json = <?php echo json_encode($$mn); ?>; 

,然後處理你想要的JSON方式:

例如。

var json=[{key:someValue}, 
      {key:someValue2}, 
      {key:someValue3} 
     ]; 

json.forEach(function(a){ 
    console.log(a.key); 
}) 
0

您應該使用JSON到「出口」你的對象/數組通過不同的語言,在這種情況下:

var json = '<?= json_encode($your_array); ?>'; 

這之後,您可以解析此JSON,我應該回報您的數組:

var your_array = JSON.parse(json);