Я просто пытаюсь динамически создавать переменные 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
)
Когда я печатаю последний, ничего не печатается. Любая помощь очень ценится, пожалуйста.
заранее спасибо
Использование переменных переменных как правило указывает на несоответствующее хранение данных массива. Вы добавляете в свой код ненужную свертку.
["'T'.1"] => строка (9) "HYD-2-CMD" ["' Weightage'.1"] => строка (5) "40.00" ["'T'.2"] = > string (9) "HYD-1-CMD" ["'Weightage'.2"] => string (5) "60.00" результат глобальной переменной ... но все же я не получил желаемых результатов ... какой-либо помощи? ?
Вы выполняете генерацию динамической переменной через цикл, но затем жестко кодируете (ожидаете) только два значения из двух строк. Вам действительно нужны переменные переменные?
@Salman, вы понимаете, что поставили зеленую галочку за неправильный ответ?






Попробуйте изменить эти строки следующим образом:
${"T$index"}= $BrickTerritory->TerritoryID;
${"Weightage$index"} = $BrickTerritory->Weightage;
В вашем коде ${"$T.$index"} $ T ищет переменную, и вы должны получить неопределенную переменную $ T, поэтому вам нужно удалить знак $, если вы хотите иметь переменные T1, T2.
После этого, ${"'Weightage'.$index"}, апострофы между Weightage означают, что ваша переменная будет иметь вид «Weightage» 1, «Weightage» 2 ... и т. д.
@Salman Этот ответ дает желаемый результат БЕЗ уведомлений. Доказательство: 3v4l.org/i0rVo
${"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;
}
Ваш 1 балл неверен, он начинается с 1 и четко упоминается в деталях вопроса. и ваш второй пункт абсолютно в порядке, теперь он работает. Большой палец вверх для вас (у)
Мне не нравится цитирование в этом ответе. Я считаю, что это неверный ответ. Это проверено?
@ Салман, этот ответ не годится. Он производит только уведомления, а не правильный вывод. Совершенно неверно. Доказательство: 3v4l.org/YEejB Пожалуйста, переосмыслите свою зеленую галочку на благо этого сообщества.
Кто поддерживает этот неправильный ответ? Это ОПРЕДЕЛЕННО введет в заблуждение / запутает исследователей.
Это можно сделать несколькими способами без переменных переменных И получить полностью динамический результат.
Вот один: (Демо)
$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
что делает var_dump ($ GLOBALS); говорит?