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 » PHP » Напишите за меня, пожалуйста » Сделать выборку из массива

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

1. goooooch - 13 Декабря, 2011 - 08:36:21 - перейти к сообщению
Здравствуйте, в переменной $row лежат массивы примерно такого вида:

PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3. [shop_order_items_id] => 105
  4. [shop_items_catalog_item_id] => 200
  5. )
  6.  
  7. (
  8. [shop_order_items_id] => 104
  9. [shop_items_catalog_item_id] => 182  
  10. )
  11.  


Мне нужно сделать строку вида $a=(a, b, c,...)

где a, b, c — это [shop_items_catalog_item_id] через запятую, т.е. в приведенном примере должна получить ся строка $a=(200, 182)
2. EuGen - 13 Декабря, 2011 - 08:42:16 - перейти к сообщению
goooooch пишет:
в переменной $row лежат массивы

То есть $row - суть массив массивов?
Тогда

PHP:
скопировать код в буфер обмена
  1. $row=array(
  2. array('shop_order_items_id'=> 105, 'shop_items_catalog_item_id'=>200),
  3. array('shop_order_items_id'=> 104, 'shop_items_catalog_item_id'=>182),
  4. );
  5. $rgResult=array_map(function($rgElement)
  6. {
  7.    return $rgElement['shop_items_catalog_item_id'];
  8. }, $row);
  9.  
  10. //var_dump($rgResult);

Если нужна строка, то далее так:

PHP:
скопировать код в буфер обмена
  1. $sResult='('.join(',', $rgResult).')';
3. Самогонщик - 13 Декабря, 2011 - 08:42:33 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $row = array(Array ( 'shop_order_items_id' => 105,'shop_items_catalog_item_id' => 200 ),
  2. Array ('shop_order_items_id' => 104, 'shop_items_catalog_item_id' => 182  ));
  3.  
  4.  
  5. $a = array();
  6. foreach($row as $r)
  7.   $a[] = $r['shop_items_catalog_item_id'];
  8.  
  9. echo join($a, ', ');

(Добавление)
Лямбды!
4. goooooch - 13 Декабря, 2011 - 09:07:01 - перейти к сообщению
Дело в том, что $row не массив, а результат вот такой конструкции
PHP:
скопировать код в буфер обмена
  1.  
  2. while($row = mysql_fetch_assoc($resource))
  3.  
  4.             {
  5.  
  6.             print_r($row);
  7.  
  8.             }
  9.  
5. EuGen - 13 Декабря, 2011 - 09:11:54 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $rgResult=array();
  2. while($row = mysql_fetch_assoc($resource))
  3. {
  4.    $rgResult[]=$row['shop_items_catalog_item_id'];
  5. }
  6. $sResult='('.join(',', $rgResult).')';

 

Powered by ExBB FM 1.0 RC1