PHP在分配变量时合并或连接字符串


php merging or concatenation strings when assigning a variable

PHP NOOB,我整天都在写这段代码,但找不到任何好的方法来修复它。

下面是我的代码:
$priv = explode(',', '0,1,1');
$m = 'me';
for($i = 0; $i <= 2; $i++)
{
    if($priv[$i] == '0')
    {
        $m.$i = 20;
    }
    else
    {
        $m.$i = 10;
    }
}

我试图将$m.$i连接在一起并将其设置为20或10,但我最终拥有me20me10而不是me1 = 20me1 = 10,当我回声$m.$i这是合法的,无论如何要使这个工作?

$m.$i = 20;

这将分配$i = 20,然后将其与$m连接,因此您将看到me20

你需要的是$m . $i .= 20;代替。它将它们连接在一起。

固定:

<?php
    $priv = explode(',', '0,1,1');
    $m = 'me';
    for($i = 0; $i <= 2; $i++)
    {
        if($priv[$i] == '0')
        {
          echo  $m . $i .= 20;
        }
        else
        {
         echo   $m.$i .= 10;
        }
    }
    ?>
编辑:

上面的答案是一个完全的误解,我意识到你打算创建变量:

for($i = 0; $i <= 2; $i++)
{
    if($priv[$i] == '0')
    {
        ${$m.$i} = 20;
        echo $me0;
   }
    else
    {
        ${$m.$i} = 10;
    }
}

像这样分配。

${$m.$i} = 20;

您正在尝试动态创建变量,因此您必须这样做:

$priv = explode(',', '0,1,1');
$m = 'me';
for($i = 0; $i <= 2; $i++)
{
    if($priv[$i] == '0')
    {
        ${$m.$i} = 20;
    }
    else
    {
        ${$m.$i} = 10;
    }
}

则尝试打印$me0, $me1