$name=nokia; Как сделать массив $nokia = array(); ?

P
На сайте с 06.01.2009
Offline
601
533

Ребят, подскажите, пожалуйста.

Есть массив куда я записал названия php файлов $files[]

Т.е. в нем nokia_n33.php, nokia_e47.php, samsung_g32.php и т.д.

Сделал скрипт, который раскидает в текстовые файлы (nokia.txt, samsung.txt) названия файлов соответственно. Все что нокиа в нокиа, самсунг в самсунг.

Итак, сейчас сделано - раскидываем по массивам


$nokia = array();
$samsung = array();

foreach ($files as $value) {
$file = $value;
$strokaplus = substr_count($file, "nokia_");
if($strokaplus===1) {$nokia[] = $file;}
$strokaplus = substr_count($file,"samsung_");
if($strokaplus===1) {$samsung[] = $file;}
}
// дальше код не пишу, дабы не захламлять форум

А хочу попробовать сделать так

Записать в один массив производителей


$namesf = array('nokia', 'samsung');

а далее сделать аналогичную проверку и запись в соответствующий массив


foreach ($namesf as $value) {
$name = $value; // получили запись $name=nokia, далее $name=samsung...

вставить $nokia = array();
foreach ($files as $value) {
$file = $value;
$strokaplus = substr_count($file, "$name-с-подчеркиванием");
if($strokaplus===1) {$$name[] = $file;}
}

}

Как заменить строку $nokia = array(); на что то типа $name = array(); чтобы вместо name подставилось nokia ?

Спасибо

anton831
На сайте с 25.05.2011
Offline
71
#1

Это типо, чтоб у вас имя переменной, само было переменной?

P
На сайте с 06.01.2009
Offline
601
#2
anton831:
Это типо, чтоб у вас имя переменной, само было переменной?

Я не знаю, в принципе решаема ли эта задача.

Вообщем если бы такой код работал

$.$name. = array();

было бы супер.

---------- Добавлено 06.02.2012 в 11:43 ----------

Просто если так не получится, то придутся обойтись без цикла и для каждого производителя продублировать выполнение одного и того же кода в php (меняется только название массива соответственно ну и ещё кое-что)

T
На сайте с 20.03.2007
Offline
67
Toy
#3

http://php.net/manual/ru/function.extract.php

А вообще почему бы не использовать двумерный массив?

anton831
На сайте с 25.05.2011
Offline
71
#4
postavkin:
Я не знаю, в принципе решаема ли эта задача.
Вообщем если бы такой код работал
$.$name. = array();

было бы супер.

Чет сомневаюсь, что это будет работать.

А если бы и заработало, то такой мути в коде наведете, что "мама не горюй".))

Ищите лучше другой способ реализации ваших задачь - уверен, что он есть.))

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#5

ТС, распишите, всё без код, что вы хотите получить 100% вы сами себе усложнили задачу.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Polimer
На сайте с 01.09.2006
Offline
84
#6

postavkin, вопрос не до конца понятен, но предположу, что то, что Вы ищете: http://www.php.net/manual/ru/language.variables.variable.php

$$name = array();

Только рекомендую еще 10 раз подумать перед применением этого, ибо вероятно изначальная ошибка в архитектуре, раз такое требуется.

Программные решения для бизнеса. (http://frontsoft.ru/) На заказ. Дорого.
P
На сайте с 06.01.2009
Offline
601
#7

Toy, круто, спасибо, но для меня это сложно. Тогда буду делать как первоначально задумал.

---------- Добавлено 06.02.2012 в 12:00 ----------

Ребят, сейчас первый пост поправлю. Минутку.

gormarket
На сайте с 29.12.2010
Offline
47
#8

postavkin, может Вам действительно достаточно двумерного ассоциированного массива ?

Например что-то типа $arrBrand['nokia']=array();

$namesf = array('nokia', 'samsung');

$arrBrand=array();

foreach ($namesf as $value) {

$name = $value; // получили запись $name=nokia, далее $name=samsung...

$arrBrand[$value] = array();

}

И будете иметь в результате пару массивов (пока пустых)

$arrBrand['nokia']

$arrBrand['samsung']

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
P
На сайте с 06.01.2009
Offline
601
#9

gormarket, спасибо, вроде получается по-тихоньку.

Извините, за нубский вопрос, а как вот это сделать с двухмерным?

foreach ($arrBrand[$dfgsg] as $value) {

$a = $value;

}

ps в массиве сделал $dfgsg вместо $value чтобы "не пересекались"

ps2. Так работает, это правильно? Оказывается при записи в массив надо вводить переменную ячейки

$arrBrand[$dfgsg][$x] = $file; $x++;

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