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
Форумы портала PHP.SU :: Версия для печати :: Передача массива в функцию. Помогите.
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Передача массива в функцию. Помогите.

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

1. potap1986 - 02 Октября, 2011 - 23:50:51 - перейти к сообщению
Здравствуйте. У меня такой вопрос. Мне нужно передать массив в функцию.

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);

Подскажите что сделать, чтобы чтобы второй вид работал.
2. Мелкий - 03 Октября, 2011 - 00:01:55 - перейти к сообщению
Всё работает, как написано.
На правах пророка - explode по запятой.
3. LIME - 03 Октября, 2011 - 00:18:36 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $t = "'1','1','1'";
  2. $array = array(explode(',',str_replace("'",'',$t)));
  3. $dd = new CsvWriter('export.csv',$array);
4. potap1986 - 03 Октября, 2011 - 19:48:20 - перейти к сообщению
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

Помогите пожалуйста это реализовать.
5. Champion - 03 Октября, 2011 - 20:06:36 - перейти к сообщению
potap1986 пишет:
$t = "'name','name1,name2','name3'"
Если я напишу preg_match_all("/('[^']+')/", $str, $m);
var_dump($m), то вы скажете, что в переменной может быть кавычка?
6. potap1986 - 03 Октября, 2011 - 21:07:16 - перейти к сообщению
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

Получается что функция раскладывает еще и переменные на запятые, а мне это не нужно.
7. LIME - 04 Октября, 2011 - 08:18:56 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $t = "'1','1,1','1'";
  3. $array = array(explode("','",$t));
  4. foreach ($array[0] as &$val)  $val=trim($val,"'");
  5. ?>
8. potap1986 - 05 Октября, 2011 - 00:10:17 - перейти к сообщению
Это работает, спасибо. Но возник другой вопрос. Помогите разобраться. Делаю экспорт товаров используя этот код http://www.softtime.ru/scripts/scv.php. Вся фишка в том, что если одна из передоваемых переменных содержит точку с зопятой (;), то переменная разбирается по этой точке с запятой и создается две переменных из одной. А этого не надо. Где в коде идет разбор? И как это исправить?
9. LIME - 05 Октября, 2011 - 00:14:51 - перейти к сообщению
разбираться не стал
сразу бросились в глаза 2 места
ищите $delimiter=";"
delimiter в переводе - разделитель
10. potap1986 - 05 Октября, 2011 - 01:01:35 - перейти к сообщению
Пробовал я уже их менять, но ничего не происходит. Не знаю в чем причина. Убираеш все ; с кода и все работает, а если оставить то раскладывается. А где идет разложение передоваемого массива?
11. potap1986 - 06 Октября, 2011 - 00:44:25 - перейти к сообщению
Всем спасибо за помощь. Вопрос решил.

 

Powered by ExBB FM 1.0 RC1