Как мне в цикл while скормить каждый раз новую переменную?
Как мне в цикл while скормить каждый раз новую переменную?
Допустим, есть три переменные:
$tier5 = '1%2C6417%2C61457%2C1057%2C35329%2C5649%2C53585%2C1377%2C3457%2C1041%2C54017%2C11777%2C9761%2C8785%2C13985%2C1137%2C18689%2C5409%2C16145%2C16385%2C13393%2C4657%2C31265%2C32769%2C54545%2C10529%2C4417%2C51553%2C7217%2C53761%2C51745%2C34385%2C15009%2C55057%2C6945%2C18193%2C2113%2C4161%2C59409%2C52257%2C2129%2C9121%2C2977%2C32273%2C9473%2C3361%2C35153%2C11169%2C34897%2C1473%2C31249%2C2577%2C60689%2C16033%2C257%2C2897%2C10049%2C5729%2C5393%2C47105%2C35345%2C34305%2C33297%2C1153%2C2193%2C51457%2C51473%2C61809%2C64801%2C54353%2C14145%2C6721%2C51713%2C33%2C12881%2C12577%2C4129%2C11089';
$tier6 = '11265%2C57361%2C3585%2C5025%2C273%2C1313%2C11585%2C57105%2C37649%2C13217%2C4673%2C33361%2C52321%2C3713%2C2817%2C59681%2C1889%2C10017%2C7185%2C53841%2C12289%2C15889%2C1105%2C64817%2C801%2C5633%2C16641%2C7473%2C9553%2C11793%2C5169%2C16673%2C1553%2C9809%2C15521%2C14097%2C15137%2C31585%2C2625%2C1729%2C7201%2C14417%2C64545%2C51345%2C11425%2C58625%2C11553%2C31057%2C2449%2C33105%2C3665%2C9729%2C57681%2C55889%2C51569%2C54785%2C1409%2C4913%2C56145%2C5473%2C6465%2C59393%2C16417%2C31825%2C145%2C10497%2C41249%2C32337%2C1393%2C51585%2C61553%2C10001%2C4689%2C2561%2C11857%2C52753%2C12961%2C35857%2C58113%2C35585%2C41761%2C57169%2C2321';
$tier7 = '19457%2C33825%2C37121%2C33041%2C36881%2C529%2C16129%2C1569%2C11681%2C5217%2C2337%2C5457%2C3633%2C513%2C49921%2C7233%2C12705%2C1121%2C35089%2C3153%2C18961%2C1793%2C3873%2C32865%2C4113%2C2305%2C1649%2C3857%2C6977%2C1665%2C36097%2C2705%2C36609%2C5281%2C33553%2C14753%2C7729%2C37633%2C10065%2C56353%2C15649%2C55569%2C56609%2C26177%2C11025%2C5889%2C7969%2C16289%2C55297%2C3377%2C11345%2C6657%2C10817%2C8961%2C9249%2C57617%2C1297%2C8977%2C19745%2C32049%2C305%2C59937%2C11041%2C14161%2C26945%2C54097%2C10769%2C59137%2C10241%2C59649%2C63809%2C3969%2C32849%2C5185%2C61713%2C15265%2C12545%2C39457%2C62993%2C1985%2C14353%2C14497%2C46593%2C35409%2C31761%2C1073%2C55121%2C32017%2C36177';
Пишу цикл:
$i = 5;
while ($i<=7)
{
$tierX = '$tier'.$i;
$getXtier = ('https://urlsait='.$tierX);
echo $getXtier."<br>";
$i++;
}
На выводе переменные выводит имена, а не значения. Как вывести именно значения каждой переменной в цикле?
https://urlsait=$tier5
https://urlsait=$tier6
https://urlsait=$tier7
Должно быть так:
https://urlsait=1%2C6417%2C61457%2C1057%2C35329%2C5649%2C53585%2C1377%2C3457%2C1041%2C54017%2C11777%2C9761%2C8785%2C13985%2C1137%2C18689%2C5409%2C16145%2C16385%2C13393%2C4657%2C31265%2C32769%2C54545%2C10529%2C4417%2C51553%2C7217%2C53761%2C51745%2C34385%2C15009%2C55057%2C6945%2C18193%2C2113%2C4161%2C59409%2C52257%2C2129%2C9121%2C2977%2C32273%2C9473%2C3361%2C35153%2C11169%2C34897%2C1473%2C31249%2C2577%2C60689%2C16033%2C257%2C2897%2C10049%2C5729%2C5393%2C47105%2C35345%2C34305%2C33297%2C1153%2C2193%2C51457%2C51473%2C61809%2C64801%2C54353%2C14145%2C6721%2C51713%2C33%2C12881%2C12577%2C4129%2C11089
Ответы (4 шт):
Как написал @u_mulder лучше использовать массивы.
$tiers = ['1%2',
'11265',
'19457'
];
foreach($tiers as $tier){
echo 'https://urlsait=' . $tier . "\n";
}
я не писал полностью ваши значения так как они очень длинные, подставите в массив $tiers который я написал выше.
Все получилось, используя массив.
Переменные держу в другой странице php и вызвал их через include;
include "tierlink.php";
$tierX = array ($tier5, $tier6, $tier7);
foreach ($tierX as $tier)
{
$getXtier = ('https://urlsait='.$tier);
echo $getXtier."<br>";
}
Немного научу плохому. (Да, конечно, эта задача решается с использованием массивов. Не очень понятно зачем эти переменные вообще определяются порознь, а не сразу в массиве, но это другой вопрос).
В коде, указанном в вопросе, достаточно добавить всего один символ $. Вместо
$getXtier = ('https://urlsait='.$tierX);
нужно написать
$getXtier = ('https://urlsait='.$$tierX);
Это называется "Переменные переменных" - нечасто используемая особенность PHP.
Обновлено Как верно подмечено в комментариях, также ошибка в том что '$tier'.$i должно быть 'tier'.$i
В итоге получаем вот такой (не очень удачный, но работающий) код
$tier5 = '1%2C6417%2C61457%2C1057%2C35329%2C5649%2C53585%2C1377%2C3457%2C1041%2C54017%2C11777%2C9761%2C8785%2C13985%2C1137%2C18689%2C5409%2C16145%2C16385%2C13393%2C4657%2C31265%2C32769%2C54545%2C10529%2C4417%2C51553%2C7217%2C53761%2C51745%2C34385%2C15009%2C55057%2C6945%2C18193%2C2113%2C4161%2C59409%2C52257%2C2129%2C9121%2C2977%2C32273%2C9473%2C3361%2C35153%2C11169%2C34897%2C1473%2C31249%2C2577%2C60689%2C16033%2C257%2C2897%2C10049%2C5729%2C5393%2C47105%2C35345%2C34305%2C33297%2C1153%2C2193%2C51457%2C51473%2C61809%2C64801%2C54353%2C14145%2C6721%2C51713%2C33%2C12881%2C12577%2C4129%2C11089';
$tier6 = '11265%2C57361%2C3585%2C5025%2C273%2C1313%2C11585%2C57105%2C37649%2C13217%2C4673%2C33361%2C52321%2C3713%2C2817%2C59681%2C1889%2C10017%2C7185%2C53841%2C12289%2C15889%2C1105%2C64817%2C801%2C5633%2C16641%2C7473%2C9553%2C11793%2C5169%2C16673%2C1553%2C9809%2C15521%2C14097%2C15137%2C31585%2C2625%2C1729%2C7201%2C14417%2C64545%2C51345%2C11425%2C58625%2C11553%2C31057%2C2449%2C33105%2C3665%2C9729%2C57681%2C55889%2C51569%2C54785%2C1409%2C4913%2C56145%2C5473%2C6465%2C59393%2C16417%2C31825%2C145%2C10497%2C41249%2C32337%2C1393%2C51585%2C61553%2C10001%2C4689%2C2561%2C11857%2C52753%2C12961%2C35857%2C58113%2C35585%2C41761%2C57169%2C2321';
$tier7 = '19457%2C33825%2C37121%2C33041%2C36881%2C529%2C16129%2C1569%2C11681%2C5217%2C2337%2C5457%2C3633%2C513%2C49921%2C7233%2C12705%2C1121%2C35089%2C3153%2C18961%2C1793%2C3873%2C32865%2C4113%2C2305%2C1649%2C3857%2C6977%2C1665%2C36097%2C2705%2C36609%2C5281%2C33553%2C14753%2C7729%2C37633%2C10065%2C56353%2C15649%2C55569%2C56609%2C26177%2C11025%2C5889%2C7969%2C16289%2C55297%2C3377%2C11345%2C6657%2C10817%2C8961%2C9249%2C57617%2C1297%2C8977%2C19745%2C32049%2C305%2C59937%2C11041%2C14161%2C26945%2C54097%2C10769%2C59137%2C10241%2C59649%2C63809%2C3969%2C32849%2C5185%2C61713%2C15265%2C12545%2C39457%2C62993%2C1985%2C14353%2C14497%2C46593%2C35409%2C31761%2C1073%2C55121%2C32017%2C36177';
$i = 5;
while ($i<=7)
{
$tierX = 'tier'.$i;
$getXtier = ('https://urlsait='.$$tierX);
echo $getXtier."<br>";
$i++;
}
Как уже упоминали авторы выше, правильнее в подобных случаях использовать массивы.
Но, раз уж потребность в составлении имени переменной с учётом значения другой переменной, возникла, могу предложить такой вариант:
$tierX = ${"tier".$i};
С учётом цикла, PHP будет обрабатывать данную строку как:
$tierX = $tier1;
В следующей итерации цикла:
$tierX = $tier2;
И так далее.