Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Передача массива в функцию. Помогите.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
potap1986
Отправлено: 02 Октября, 2011 - 23:50:51
Post Id


Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Здравствуйте. У меня такой вопрос. Мне нужно передать массив в функцию.

1)
$array = array(array('1','1','1'));-запись такого типа работает. Передается 3 переменные.
$dd = new CsvWriter('export.csv',$array);

2)
$t = "'1','1','1'";
$array = array(array($t)); - а запись такого типа не работает. Передает как одну переменную. А нужен этот вид записи.
$dd = new CsvWriter('export.csv',$array);

Подскажите что сделать, чтобы чтобы второй вид работал.
 
 Top
Мелкий Супермодератор
Отправлено: 03 Октября, 2011 - 00:01:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Всё работает, как написано.
На правах пророка - explode по запятой.


-----
PostgreSQL DBA
 
 Top
LIME
Отправлено: 03 Октября, 2011 - 00:18:36
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1. $t = "'1','1','1'";
  2. $array = array(explode(',',str_replace("'",'',$t)));
  3. $dd = new CsvWriter('export.csv',$array);
 
 Top
potap1986
Отправлено: 03 Октября, 2011 - 19:48:20
Post Id


Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




LIME пишет:
PHP:
скопировать код в буфер обмена
  1. $t = "'1','1','1'";
  2. $array = array(explode(',',str_replace("'",'',$t)));
  3. $dd = new CsvWriter('export.csv',$array);


Есть одна проблемка. У меня переменные в строке могут быть с запятой и функция разбивает и переменные.

$t = "'name','name1,name2','name3'"; - мне надо получить:
1. name
2. name1,name2
3. name3

Помогите пожалуйста это реализовать.

(Отредактировано автором: 03 Октября, 2011 - 19:48:51)

 
 Top
Champion Супермодератор
Отправлено: 03 Октября, 2011 - 20:06:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




potap1986 пишет:
$t = "'name','name1,name2','name3'"
Если я напишу preg_match_all("/('[^']+')/", $str, $m);
var_dump($m), то вы скажете, что в переменной может быть кавычка?
 
 Top
potap1986
Отправлено: 03 Октября, 2011 - 21:07:16
Post Id


Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




potap1986 пишет:
1. $t = "'name','name1,name2','name3'";
2. $array = array(explode(',',str_replace("'",'',$t)));


Подскажите как исправить вторую строку чтобы получался массив с переменными 1) name 2) name1,name2 3) name3

Сейчас получается массив с переменными 1) name 2) name1 3)name2 4) name3

Получается что функция раскладывает еще и переменные на запятые, а мне это не нужно.
 
 Top
LIME
Отправлено: 04 Октября, 2011 - 08:18:56
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $t = "'1','1,1','1'";
  3. $array = array(explode("','",$t));
  4. foreach ($array[0] as &$val)  $val=trim($val,"'");
  5. ?>

(Отредактировано автором: 04 Октября, 2011 - 08:19:39)

 
 Top
potap1986
Отправлено: 05 Октября, 2011 - 00:10:17
Post Id


Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Это работает, спасибо. Но возник другой вопрос. Помогите разобраться. Делаю экспорт товаров используя этот код http://www.softtime.ru/scripts/scv.php. Вся фишка в том, что если одна из передоваемых переменных содержит точку с зопятой (;), то переменная разбирается по этой точке с запятой и создается две переменных из одной. А этого не надо. Где в коде идет разбор? И как это исправить?
 
 Top
LIME
Отправлено: 05 Октября, 2011 - 00:14:51
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




разбираться не стал
сразу бросились в глаза 2 места
ищите $delimiter=";"
delimiter в переводе - разделитель
 
 Top
potap1986
Отправлено: 05 Октября, 2011 - 01:01:35
Post Id


Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Пробовал я уже их менять, но ничего не происходит. Не знаю в чем причина. Убираеш все ; с кода и все работает, а если оставить то раскладывается. А где идет разложение передоваемого массива?
 
 Top
potap1986
Отправлено: 06 Октября, 2011 - 00:44:25
Post Id


Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Всем спасибо за помощь. Вопрос решил.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB