简体   繁体   中英

php merging or concatenation strings when assigning a variable

PHP NOOB, i have been working on this code all day, but cant find any good way to fix it.

here is my code:

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

Am trying to join $m.$i together and set it to 20 or 10, but i end up having me20 or me10 instead of me1 = 20 or me1 = 10 when i echo $m.$i which is legit, is there anyways to make this work?

$m.$i = 20;

This will assign $i = 20 and then concatenate it with $m and hence you will see me20 .

What you need is $m . $i .= 20; $m . $i .= 20; instead. which will concatenate them altogether.

Fixed:

<?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;
        }
    }
    ?>

EDIT:

The above answer was a total misunderstanding, I realised you intended to create the variables:

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

像这样分配它。

${$m.$i} = 20;

You are trying to dynamically create variables, so you have to do something like this:

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

then try to priny $me0, $me1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM