Динамически создавайте переменные PHP в цикле foreach - PullRequest
0 голосов
/ 18 сентября 2018

Я просто пытаюсь динамически создавать переменные PHP.ниже приведен код, который я пробовал.

    if($BrickTerritorys)
    {
            foreach($BrickTerritorys as $index=>$BrickTerritory)
            {
                ${"$T.$index"}= $BrickTerritory->TerritoryID;
                ${"'Weightage'.$index"} = $BrickTerritory->Weightage;
            }
            echo $T1."-".$T2."--".$Weightage1."---".$Weightage2; exit;
    }

while 
$BrickTerritorys is 
 [1] => stdClass Object
        (
            [id] => 119
            [TerritoryID] => HYD-2-CMD
            [BrickCode] => 16
            [BrickName] => BUHURO
            [Weightage] => 40.00
            [BPCode] => bp00066
            [GroupCode] => CMD
        )
    [2] => stdClass Object
        (
            [id] => 36330
            [TerritoryID] => HYD-1-CMD
            [BrickCode] => 16
            [BrickName] => BUHURO
            [Weightage] => 60.00
            [BPCode] => bp00066
            [GroupCode] => CMD
        )

Когда я печатаю в последний раз, ничего не печатается.Любая помощь очень ценится, пожалуйста.

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

${"T$index"}, а также ${"Weightage$index"}

вам не нужна точка, или вы можете использовать ${'T' . $index}. посмотри на точку. это не операция сложения, пока она в "". после этого кода:

if($BrickTerritorys)
{
    foreach($BrickTerritorys as $index=>$BrickTerritory)
    {
        ${"$T.$index"}= $BrickTerritory->TerritoryID;
        ${"'Weightage'.$index"} = $BrickTerritory->Weightage;
    }
    echo $T1."-".$T2."--".$Weightage1."---".$Weightage2; exit;
}
0 голосов
/ 18 сентября 2018

Это можно сделать несколькими разными способами без переменных переменных И получить полностью динамический результат.

Вот один из них: ( Демо )

$array = (array)$BrickTerritorys;             // cast as array
$tids = array_column($array, 'TerritoryID');  // isolate column data
$was = array_column($array, 'Weightage');     // isolate column data
$merged = array_merge($tids, $was);           // add 2nd array data after 1st array data
foreach ($merged as $i => $v) {
    echo str_repeat('-', $i) , $v;            // increase hyphens on each iteration starting from 0
}

Вывод: (обратите внимание, нет жестко закодированного эха)

HYD-2-CMD-HYD-1-CMD--40.00---60.00
0 голосов
/ 18 сентября 2018

Попробуйте изменить эти строки следующим образом:

        ${"T$index"}= $BrickTerritory->TerritoryID;
        ${"Weightage$index"} = $BrickTerritory->Weightage;

В вашем коде ${"$T.$index"} $ T ищет переменную, и вы должны получить неопределенную переменную $ T, поэтому вы должны удалить знак $, есливы хотите иметь переменные T1, T2.

После этого, ${"'Weightage'.$index"}, апострофы между Weightage означают, что ваша переменная будет выглядеть как 'Weightage'.1,' Weightage'.2 ... и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...