у меня есть более 5 ссылок на изображение, поэтому я хочу сделать так,
$ p_image1, $ p_image2, $ p_image3, $ p_image4, $ p_image5
но я не понимаю, почему моя треска не работает …
это мой код для получения данных массива:
$id = mysqli_real_escape_string($koneksi,$_GET['i']);
$query = mysqli_query($koneksi,"SELECT * FROM `tb_produk` WHERE `p_id` = '$id'");
$get = mysqli_fetch_array($query);
это мой код для цикла:
if ($j_image > 1) {
for ($i = 1; $i <= $j_image; $i++) {
$p_image[] = $get['p_image'.$i];
if ($i > 4) {
break;
}
?>
<li data-uk-slideshow-item="<?php echo $i ?>">
<img src="<?php echo $get['p_image'.$i]; ?>">
</li>
<?php
}
}
?>
почему это не работает, спасибо за вашу помощь раньше 🙂
Массив — это идеальный способ обработки нескольких похожих значений. Вы действительно не должны рассматривать создание отдельных переменных для этого.
Тем не менее, для создания динамических переменных, вам нужно использовать дополнительные $
и заверните их в фигурные скобки {..}
:
for ($i = 1; $i <= $j_image; $i++) {
// Create string for dynamic variable name and put it inside curly braces
// use $ in front to define this as a new variable
${'p_image'.$i} = $get['p_image'.$i];
if ($i > 4) {
break;
}
Я думаю, что создание динамических именованных переменных — это просто способ усложнить ситуацию.
Вместо этого я считаю, что решение проблемы — это решение.
С динамическими переменными работать сложнее, чем с массивами, и они будут вызывать ошибки в вашем коде.
Здесь я использую foreach для массива $ get, что означает, что он будет зацикливать имеющиеся элементы, и нам не нужно считать и угадывать вещи.
Затем я удалил этот новый массив, который вы создали, так как я не вижу его смысла и вместо этого перешел непосредственно к выходной части с моей переменной foreach $ image.
Я также держу код на PHP и повторяю html, так как нахожу, что его легче читать, но это чисто мнение, и вы можете делать все, что захотите.
$i=1;
foreach($get as $image){
if ($i > 4) {
break;
}
echo "<li data-uk-slideshow-item=" . $i .">\n";
echo ' <img src="' . $image . '">' . "\n";
echo "</li>\n";
$i++;
}
Пример вывода:
<li data-uk-slideshow-item=1>
<img src="1">
</li>
<li data-uk-slideshow-item=2>
<img src="2">
</li>
<li data-uk-slideshow-item=3>
<img src="3">
</li>
<li data-uk-slideshow-item=4>
<img src="4">
</li>
Не уверен, что ваш код должен выводить четыре или пять элементов.
Но я просто оставил if и сломался, как это было в вашем коде.