2016-02-09 232 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);