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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
amf1k
Отправлено: 20 Апреля, 2015 - 19:56:20
Post Id


Гость


Покинул форум
Сообщений всего: 110
Дата рег-ции: Май 2013  


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

[+]


Есть массив (это для примера - количество полей "title" не известно):
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array(
  3.     0=>array('title'=>'Название'),
  4.     1=>array('title'=>'Название 2')
  5. );
  6.  

нужно его разбить на строку в виде:
PHP:
скопировать код в буфер обмена
  1.  
  2. $str = 'Название","Название 2';
  3.  

Делаю это для того, что бы выбирать в БД SQL определенные название полей "title"
PHP:
скопировать код в буфер обмена
  1.  
  2. $query = 'SELECT `title` FROM `таблица` WHERE `title` IN ("'.$str.'")';
  3.  

Может есть ещё какие то идеи по выборке если есть массив $array???
 
 Top
DelphinPRO
Отправлено: 20 Апреля, 2015 - 20:59:10
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $array = array(
  2.     0=>array('title'=>'Название'),
  3.     1=>array('title'=>'Название 2')
  4. );
  5. $result = [];
  6. foreach ($array as $item) {
  7.   $result[] = $item['title'];
  8. }
  9.  
  10. $string = join(',', $result);

(Отредактировано автором: 20 Апреля, 2015 - 21:03:11)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
amf1k
Отправлено: 20 Апреля, 2015 - 21:26:16
Post Id


Гость


Покинул форум
Сообщений всего: 110
Дата рег-ции: Май 2013  


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

[+]


DelphinPRO пишет:
PHP:
скопировать код в буфер обмена
  1. $array = array(
  2.     0=>array('title'=>'Название'),
  3.     1=>array('title'=>'Название 2')
  4. );
  5. $result = [];
  6. foreach ($array as $item) {
  7.   $result[] = $item['title'];
  8. }
  9.  
  10. $string = join(',', $result);


Parse error: syntax error, unexpected
ругается на 5 строчку(
 
 Top
exlant
Отправлено: 20 Апреля, 2015 - 21:32:01
Post Id



Посетитель


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


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




версия php у вас низкая...

вот так попробуйте $result = array();

или вообще удалите эту строку, она там необязательна...
 
 Top
amf1k
Отправлено: 20 Апреля, 2015 - 21:43:03
Post Id


Гость


Покинул форум
Сообщений всего: 110
Дата рег-ции: Май 2013  


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

[+]


exlant пишет:
версия php у вас низкая...

вот так попробуйте $result = array();

или вообще удалите эту строку, она там необязательна...


спасибо, очень помогли в эту трудную минуту) а то я тут начал писать новый велосипед:
PHP:
скопировать код в буфер обмена
  1.  
  2. $str = '';
  3. foreach ($array as $value) {
  4.     if ( is_array($value) && isset($value['title']) ) {
  5.         $str .= '","'.$value['title'];
  6.     }
  7. }
  8. echo substr($str,3);
  9.  

Ваш код будет наверное самый оптимальный!)
 
 Top
DelphinPRO
Отправлено: 20 Апреля, 2015 - 23:26:03
Post Id



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


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


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




exlant пишет:
или вообще удалите эту строку, она там необязательна...

С чего вы взяли? Я не пишу необязательных строк.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
exlant
Отправлено: 20 Апреля, 2015 - 23:50:46
Post Id



Посетитель


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


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




с того что вот здесь массив сам создастся

(Добавление)
и я не спорю, что обозначить массив перед его использованием корректнее, но в php не обязательно!
 
 Top
DelphinPRO
Отправлено: 21 Апреля, 2015 - 01:07:26
Post Id



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


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


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




Обязательно!
Код без этой строчки не пройдет review,
во время отладки будет вылетать notice,
Не говоря о том, что в IDE "$result[] =" будет отвратительно подчеркнуто волнистой линией Улыбка

И дальше даже не продолжайте спорить на эту тему, и не давайте неправильных советов. Не учите плохому Улыбка

Неважно для чего вы пишете код. Даже если это одноразовый скрипт для личного применения, пишите красиво, правильно и корректно. Это должно быть в крови, на уровне подсознания.

А наговнокодить любой может..

Эх, что называется, Остапа понесло... © Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Апреля, 2015 - 09:59:48
Post Id



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


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


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




Почему не сразу из БД дастать все что нужно?
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.     GROUP_CONCAT(title SEPARATOR ', ') titles
  3.   FROM таблица
  4.   WHERE title IN(1, 2, 3, 4)
 
 Top
exlant
Отправлено: 21 Апреля, 2015 - 11:55:17
Post Id



Посетитель


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


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




Я не знаю какая у вас IDE!
У меня стоит NetBeans 8, и всего выше вами описанного он не делает, то есть:
волнистой линией не инициализированные, именно php, переменные не подчеркивает;
и во время отладки никаких notice-ов не вылазит!

Что означает - "не пройдет review", я не знаю, все таки я только учусь!

И что значит не учите плохому???
Я лишь указал, что строчка не обязательна, каковой она и является! И пусть человек сам думает, где ему нужно ее ставить, а где нет! А не верит в то, что без нее код не будет работать!

И, между прочим, даже в официальном мануале написано: http://php.net/manual/ru/languag...ables.basics.php
Цитата:

Хотя в PHP и нет необходимости инициализировать переменные, это считается очень хорошей практикой. Неинициализированные массивы становятся пустыми массивами.

Идите, вон с ними спорьте!
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Апреля, 2015 - 12:32:22
Post Id



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


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


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




exlant пишет:
Я лишь указал, что строчка не обязательна
Из-за вот таких как ты пых считают говноязыком, а всех кто на нем пишет говнокодерами, лохами и вообще не программистами.
Так что послушал бы что тебе деды говорят, а не возникал тут, раз только учишься.
Посадить бы тебя на сях писать - сразу бы пылу поубавилось.

З.Ы.: Негативчик близко к сердцу не воспринимай, а вот дельные советы впитывай.
 
 Top
exlant
Отправлено: 21 Апреля, 2015 - 12:39:26
Post Id



Посетитель


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


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




да, что с вами не так??? Из-за каких как я???

Я написал раз, напишу еще раз! Да инициализировать переменные, массивы, и т.д. корректнее, чем не делать так! Я тоже массивы, и переменные, в большинстве случаев, с начало объявляю, потом использую! НО так делать не обязательно!

А также в мануале написано, что не обязательно!
И тебе тоже скажу, иди спорь с ними!
И разработчикам пыха доказывай, что они ламеры, и говнокодеры, что сделали такую возможность!

(Отредактировано автором: 21 Апреля, 2015 - 12:41:19)

 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Апреля, 2015 - 12:45:00
Post Id



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


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


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




Зачем мне с ними спорить?
Так сделано для дыбилов или для совместимости со старым говнокодом или по велению левой пятки одного из разработчиков.
Ну, молодец что всетаки объявляешь.
Вот и объявляй дальше, и не учи совсем новичков не объявлять.
 
 Top
exlant
Отправлено: 21 Апреля, 2015 - 12:48:42
Post Id



Посетитель


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


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




Еще раз! Я не учил, что так делать не надо!
Я же не написал, что объявлять массивы не нужно!
Я написал не обязательно!
Если вы никто не чувствуете разницу, то это лично ваши проблемы!
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Апреля, 2015 - 12:53:06
Post Id



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


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


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




exlant пишет:
Я же не написал, что объявлять массивы не нужно!
Я написал не обязательно!
Ну давай вот так:

Ты обязан объявить массив когда он тебе нужен.
А когда массив не нужен, то не обязательно его объявлять, что естественно.

Подмигивание
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB