Проблема с использованием массива в цикле for (php)

12
[Удален]
752

Доброго, уважаемые форумчане.

Есть такой код:


for ($i = 1; $i <=10; $i++)
{
$magnitola = array ('Pioner','Prology', 'JVC');
$signaliz = array ('Tomahawk','Sheriff','Aps','Мангуст', 'Pandora', 'Magicar', 'Cenmax', 'Scher Khan', 'Kgb', 'Black bug');
$magnitola = "Магнитола ".$magnitola[rand (0, count ($magnitola)-1)];
$signaliz = "Сигнализация ".$signaliz[rand (0, count ($signaliz)-1)];
echo "Магнитола ".$magnitola."<br />";
echo "Сигнализация ".$signaliz;

}

В первой итерации выдает то, что нужно, а в последующие - либо первые символы элементов массива, либо первые буквы слов в echo, либо вообще ничего. В чем может быть проблема? Как это исправить?! Впервые столкнулся... :(

Заранее огромное спасибо за внимание и помощь...

kil
На сайте с 03.04.2006
Offline
84
kil
#1

У вас $magnitola сначала массив, а потом строка. Используйте разные переменные.

Carapax
На сайте с 27.03.2008
Offline
94
#2

По-моему, первые две строки надо вывести из цикла, а последние две строки поменять на...

  
$magnitola = array ('Pioner','Prology', 'JVC');
$signaliz = array ('Tomahawk','Sheriff','Aps','Мангуст', 'Pandora', 'Magicar', 'Cenmax', 'Scher Khan', 'Kgb', 'Black bug');


for ($i = 1; $i <=10; $i++)
{
$magnitola = "Магнитола ".$magnitola[rand (0, count ($magnitola)-1)];
$signaliz = "Сигнализация ".$signaliz[rand (0, count ($signaliz)-1)];

echo $magnitola<br />;
echo $signaliz;

}
играем (http://www.awro.ru/) спортивное питание (https://maxnutrition.ru/) магазин сантехники в спб (https://saniteka.ru/)
AlikZP
На сайте с 22.11.2009
Offline
107
#3

Как-то вы странно используете переменные

Тут она массив

$magnitola = array ('Pioner','Prology', 'JVC');

Тут она слева строка, справа массив

$magnitola = "Магнитола ".$magnitola[rand (0, count ($magnitola)-1)];

Тут она уже строка

echo "Магнитола ".$magnitola."<br />";

Может попробовать

$magnitola = array ('Pioner','Prology', 'JVC'); 

$magnitola_str = "Магнитола ".$magnitola[rand (0, count ($magnitola)-1)];
echo "Магнитола ".$magnitola_str."<br />";

Да и при правильной работе вы получите на экран что-то по примеру:

Магнитола Магнитола JVC

Website CMS: быстрая, удобная, недорогая! Вечная лицензия за 45$ (/ru/forum/524503) Яся - быстрый поиск фото для товаров. OpenCart/ocStore. Дополнение. (/ru/forum/665287) Грамотная верстка ваших макетов (/ru/forum/comment/8853216)
Lord Maverik
На сайте с 15.04.2003
Offline
471
#4

kil, да и пофигу поидее :)

Lord Maverik добавил 13.07.2010 в 10:16

Carapax, в вашем случае имя переменным точно менять надо.

RedMall.Ru (https://redmall.ru) - Товары из Китая (Таобао, Tmall) с проверкой качества, скидка для форумчан 7% Партнерская программа 2 уровня: 5% + 5%. Подробнее. (https://redmall.ru/about/partner/)
kil
На сайте с 03.04.2006
Offline
84
kil
#5
Lord Maverik:
kil, да и пофигу поидее :)

Lord Maverik добавил 13.07.2010 в 10:16
Carapax, в вашем случае имя переменным точно менять надо.

Какой такой идее?!

Массив сделать строкой и пытаться получить его элементы и их количество?

Lord Maverik
На сайте с 15.04.2003
Offline
471
#6

У меня сей скрипт выводит:

Магнитола Магнитола Pioner
Сигнализация Сигнализация MagicarМагнитола Магнитола Prology
Сигнализация Сигнализация ApsМагнитола Магнитола JVC
Сигнализация Сигнализация CenmaxМагнитола Магнитола Pioner
Сигнализация Сигнализация Scher KhanМагнитола Магнитола JVC
Сигнализация Сигнализация MagicarМагнитола Магнитола Pioner
Сигнализация Сигнализация МангустМагнитола Магнитола Pioner
Сигнализация Сигнализация Black bugМагнитола Магнитола Pioner
Сигнализация Сигнализация PandoraМагнитола Магнитола Pioner
Сигнализация Сигнализация PandoraМагнитола Магнитола Prology
Сигнализация Сигнализация Aps

Никулин М, а должен бы что?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#7
kil:
Какой такой идее?!

Массив сделать строкой и пытаться получить его элементы и их количество?

Вырубите мозг а?

Он каждый раз в переменную массив загоняет.

Ещё один:

Тут она слева строка, справа массив

Она сначало массив, а потом после обработки в строку превращается.

Ну это тоже самое, что:

$one=array(1,2,3);

$one=$one[1];

echo $one; //Выведет 2. В чём проблемы то?

ТС, а действительно, что Вы хотите получить на выходе то?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Lord Maverik
На сайте с 15.04.2003
Offline
471
#8
kil:
Какой такой идее?!
Массив сделать строкой и пытаться получить его элементы и их количество?

Справа оно массив, и он работает с ним как с массивом. Далее слева он переопределяет переменную в строку. И работает как со строкой.

На следующей итерации снова объявляет переменную массивом. Както так :)

[Удален]
#9

Блин.. Господа, спасибо огромное за внимание... После трех суток ничерта голова не варит... Банально автоопределение типа я упустил из внимания... Т.е. массив в строку превращать начал (ну или как это можно назвать я хз - такой тупости я от себя не ожидал...)

Извините за кагбэ флуд... Уже переписал - работает. А в цикл - это элеменц генератора текста. Только упрощенный до безобразия. Сам скрипт пока на 200 строк где-то...

Carapax
На сайте с 27.03.2008
Offline
94
#10
Lord Maverik:
Carapax, в вашем случае имя переменным точно менять надо.

Согласен, образуется рекурсия.

А остальное правильно. Должно работать :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий