Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2012, 21:39   #1
HDMI
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 48
По умолчанию Массивы PHP

Добрый вечер.

У меня есть $products, содержащий:
PHP код:
Array
(
    

    [
2] => Array
        (
            [
product_id] => 14
            
[price] => 16000.00
            
[amount] => 2
            
[product] => HD LCD телевизор Toshiba 40E220U Class 1080P 40"
            [extra] => a:9:{s:15:"
product_options";a:0:{}s:18:"unlimited_download";s:1:"N";s:7:"product";s:57:"HD LCD телевизор Toshiba 40E220U Class 1080P 40"";s:10:"company_id";s:1:"1";s:6:"is_edp";s:1:"N";s:12:"edp_shipping";s:1:"N";s:8:"discount";i:0;s:10:"base_price";d:15999.6800000000002910383045673370361328125;s:12:"stored_price";s:1:"N";}
        )

    [
3] => Array
        (
            [
product_id] => 66
            
[price] => 12478.00
            
[amount] => 1
            
[product] => Анти-радар XRS 9970G
            
[extra] => a:9:{s:15:"product_options";a:0:{}s:18:"unlimited_download";s:1:"N";s:7:"product";s:29:"Анти-радар XRS 9970G";s:10:"company_id";s:1:"1";s:6:"is_edp";s:1:"N";s:12:"edp_shipping";s:1:"N";s:8:"discount";i:0;s:10:"base_price";d:12478.399999999999636202119290828704833984375;s:12:"stored_price";s:1:"N";}
        )

    [
4] => Array
        (
            [
product_id] => 166
            
[price] => 23998.00
            
[amount] => 1
            
[product] => Nikon 1 J1 Two-Lens Kit красный
            
[extra] => a:9:{s:15:"product_options";a:0:{}s:18:"unlimited_download";s:1:"N";s:7:"product";s:38:"Nikon 1 J1 Two-Lens Kit красный";s:10:"company_id";s:1:"1";s:6:"is_edp";s:1:"N";s:12:"edp_shipping";s:1:"N";s:8:"discount";i:0;s:10:"base_price";d:23998.4000000000014551915228366851806640625;s:12:"stored_price";s:1:"N";}
        )


В foreach из элементов этого массива создаю новый массив. Т.е. вот такую конструкцию хочу получить:

PHP код:
Array
(
    [
0] => Array
        (
            [
product_id] => 14
            
[product_amount] => 32000
            
[product] => HD LCD телевизор Toshiba 40E220U Class 1080P 40"
        )

    [1] => Array
        (
            [product_id] => 66
            [product_amount] => 12478
            [product] => Анти-радар XRS 9970G
        )

    [2] => Array
        (
            [product_id] => 166
            [product_amount] => 23998
            [product] => Nikon 1 J1 Two-Lens Kit красный
        )


Использую array_merge.
PHP код:
foreach ($products_old as $key => $value)
{
    
$pr_id $value[product_id];
    
$pr_name $value[product];
    
$pr_price $value[price];
    
$pr_amount $value[amount];
    
$products[111][product_id] = $pr_id;
    
$products[111][product_amount] = $pr_price*$pr_amount;
    
$products[111][product] = $pr_name;
    
$products array_merge($products$products[111]);

На выходе получаю вот что:

PHP код:
Array
(
    [
0] => Array
        (
            [
product_id] => 14
            
[product_amount] => 32000
            
[product] => HD LCD телевизор Toshiba 40E220U Class 1080P 40"
        )

    [product_id] => 166
    [product_amount] => 23998
    [product] => Nikon 1 J1 Two-Lens Kit красный
    [1] => Array
        (
            [product_id] => 66
            [product_amount] => 12478
            [product] => Анти-радар XRS 9970G
        )

    [2] => Array
        (
            [product_id] => 166
            [product_amount] => 23998
            [product] => Nikon 1 J1 Two-Lens Kit красный
        )


Как правильно собрать массив без этих элементов?

PHP код:
[product_id] => 166
[product_amount] => 23998
[product] => Nikon 1 J1 Two-Lens Kit красный 
HDMI вне форума Ответить с цитированием
Старый 01.10.2012, 21:52   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

PHP код:
$new_products = array();
foreach(
$products as $item){
    
$new_products[]['product_id'] = $item['product_id'];
    
$new_products[]['product_amount'] = $item['price'] * $item['amount'];
    
$new_products[]['product'] = $item['product'];
}
echo 
'<pre>';
print_r($new_products); 
Andkorol вне форума Ответить с цитированием
Старый 01.10.2012, 22:25   #3
HDMI
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
PHP код:
$new_products = array();
foreach(
$products as $item){
    
$new_products[]['product_id'] = $item['product_id'];
    
$new_products[]['product_amount'] = $item['price'] * $item['amount'];
    
$new_products[]['product'] = $item['product'];
}
echo 
'<pre>';
print_r($new_products); 
Спасибо за быстрый ответ. Это не совсем то, что мне нужно. С вашим кодом получается:
PHP код:
Array
(
    [
0] => Array
        (
            [
product_id] => 7
        
)

    [
1] => Array
        (
            [
product_amount] => 1760
        
)

    [
2] => Array
        (
            [
product] => Джемпер с капюшоном Trefoil Hoodie
        
)

    [
3] => Array
        (
            [
product_id] => 12
        
)

    [
4] => Array
        (
            [
product_amount] => 1920
        
)

    [
5] => Array
        (
            [
product] => Брюки для разогрева Adidas
        
)

    [
6] => Array
        (
            [
product_id] => 14
        
)

    [
7] => Array
        (
            [
product_amount] => 32000
        
)

    [
8] => Array
        (
            [
product] => HD LCD телевизор Toshiba 40E220U Class 1080P 40"
        )

    [9] => Array
        (
            [product_id] => 66
        )

    [10] => Array
        (
            [product_amount] => 12478
        )

    [11] => Array
        (
            [product] => Анти-радар XRS 9970G
        )

    [12] => Array
        (
            [product_id] => 166
        )

    [13] => Array
        (
            [product_amount] => 23998
        )

    [14] => Array
        (
            [product] => Nikon 1 J1 Two-Lens Kit красный
        )


И еще, я в коде опустил ветвление и схематично показал. У меня массив будет собираться в нескольких местах. Т.е. необходимо в конец массива добавлять новые элементы. Поэтому array_merge подходит больше, но вот с ним результат не такой получается.
HDMI вне форума Ответить с цитированием
Старый 01.10.2012, 22:59   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от HDMI Посмотреть сообщение
Это не совсем то, что мне нужно. С вашим кодом получается:
PHP код:
Array
(
    [
0] => Array
        (
            [
product_id] => 7
        
)

    [
1] => Array
        (
            [
product_amount] => 1760
        
)
// .... 
Это да, я просмотрел.
Нужно так примерно:
PHP код:
$i 0;
foreach(
$products as $item){ 
    
$new_products[$i]['product_id'] = $item['product_id']; 
    
$new_products[$i]['product_amount'] = $item['price'] * $item['amount']; 
    
$new_products[$i]['product'] = $item['product']; 
    
$i++;

Насчет ветвления – не совсем понятно.
Andkorol вне форума Ответить с цитированием
Старый 02.10.2012, 07:20   #5
HDMI
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Это да, я просмотрел.
Нужно так примерно:
PHP код:
$i 0;
foreach(
$products as $item){ 
    
$new_products[$i]['product_id'] = $item['product_id']; 
    
$new_products[$i]['product_amount'] = $item['price'] * $item['amount']; 
    
$new_products[$i]['product'] = $item['product']; 
    
$i++;

Насчет ветвления – не совсем понятно.
Я так уже пробовал Насчет ветвления: я не могу знать, я не могу знать, какое сейчас будет значение последнего элемента массива. Т.е. Мне необходимо каждый новый продукт добавлять в конец массива, увеличивая номер на единицу. Если как код выше - то нормально работает, но если нет внутри foreach if. У меня будет собираться в разных местах массив. Т.е. примерно вот что:
PHP код:
foreach($products_old as $item){  
  if (isset(
$extra[product_options_value]))
    {
        
//здесь тоже собирается массив
    
}
    else
    {
       
$products[$i]['product_id'] = $item['product_id'];  
       
$products[$i]['product_amount'] = $item['price'] * $item['amount'];  
       
$products[$i]['product'] = $item['product'];  
   }

HDMI вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
JavaScript PHP MySQL массивы electronik1 PHP 3 14.02.2011 04:14
PHP и массивы Claster Помощь студентам 10 06.10.2010 16:00
PHP: задача на массивы (Un=(n-1)!/2^n) bpystep PHP 1 31.05.2009 11:31