2016-01-16 2 views
0

Привет У меня есть набор массива, который я получаю из цикла foreach. У меня нет индекса, и я хочу его изменить.Как добавить индекс в коллекцию массивов в php?

$productsRange = ProductPricesInventoryTax::where('sale_price', '>=', $min_price) 
               ->where('sale_price', '<=', $max_price) 
               ->get(); 
      foreach($productsRange as $product){ 
       $products = Product::where('id', '=', $product->product_id)->paginate(15); 
       $productDetails = $this->prepareAllProductDetails($products); 
       $array = $productDetails[0];//this returns the unidexed array 
       echo "<pre>"; 
       print_r($array); 

массив выглядит следующим образом.

Array 
    (
     [id] => 1 
     [sku] => 258 
     [name] => Bingo Mad Angles Chaat Masti 
     [is_configurable_product] => 1 
     [mrp] => 20 
     [sale_price] => 20 
     [image] => 258-bingo-mad-angles.jpeg 
     [brand] => Bingo 
     [configurable_attributes] => Array 
     (
      [0] => Array 
       (
        [child_product_id] => 2 
        [name] => Weight 
        [value] => 90 gms 
        [mrp] => 20 
        [sale_price] => 20 
       ) 

     ) 

) 


    Array 
    (
    [id] => 3 
    [sku] => 262 
    [name] => India Gate Basmati Rice-Rozana 
    [is_configurable_product] => 1 
    [mrp] => 620 
    [sale_price] => 444 
    [image] => 262-india-gate.jpeg 
    [brand] => India Gate 
    [configurable_attributes] => Array 
     (
      [0] => Array 
       ( 
        [child_product_id] => 4 
        [name] => Weight 
        [value] => 5 Kgs 
        [mrp] => 620 
        [sale_price] => 444 
       ) 

     ) 

) 

Но теперь я хочу, чтобы массив выглядел примерно таким, что имеет индекс массива на каждом массиве.

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [sku] => 258 
      [name] => Bingo Mad Angles Chaat Masti 
      [is_configurable_product] => 1 
      [mrp] => 20 
      [sale_price] => 20 
      [image] => 258-bingo-mad-angles.jpeg 
      [brand] => Bingo 
      [configurable_attributes] => Array 
       (
        [0] => Array 
         (
          [child_product_id] => 2 
          [name] => Weight 
          [value] => 90 gms 
          [mrp] => 20 
          [sale_price] => 20 
         ) 

       ) 

     ) 

    [1] => Array 
     (
      [id] => 3 
      [sku] => 262 
      [name] => India Gate Basmati Rice-Rozana 
      [is_configurable_product] => 1 
      [mrp] => 620 
      [sale_price] => 444 
      [image] => 262-india-gate.jpeg 
      [brand] => India Gate 
      [configurable_attributes] => Array 
       (
        [0] => Array 
         (
          [child_product_id] => 4 
          [name] => Weight 
          [value] => 5 Kgs 
          [mrp] => 620 
          [sale_price] => 444 
         ) 

       ) 

     ) 

Помогите пожалуйста.

+0

Где исходные массивы? они уже в массиве или вы получаете их по одному ?. Пожалуйста, поделитесь некоторым кодом и дайте более подробную информацию. –

+0

@AlexAndrei. Я добавил код, откуда идет мой массив, –

ответ

0

Просто добавьте $productDetails[0] в новый массив и распечатать результат вне foreach

$array[] = $productDetails[0]; //this returns the unidexed array 

Тогда, вне foreach

print_r($array); 

Все код остается тот же, за исключением

echo "<pre>"; 
print_r($array); 

которые не нуждаются d больше, так как мы перемещали выход за пределы цикла.

0

Если вы пытаетесь объявить массив в PHP, необходимо добавить несколько вещей. Вам нужно запятую между каждым последующим элементом. Кроме того, ключ не должен быть в фигурных скобках:

array(
    "id" => 1, 
    "sku" => 258, 
    "name" => "Bingo Mad Angles Chaat Masti", 
    ..., 
    "configurable attributes" => array(
            0 => array(
             "child_product_id" => 4, 
             "name" => "Weight", 
             ...) 
            ) 
) 

Чтобы создать массив массивов, можно использовать похожий синтаксис:

array(
    1 => array(
      "id" => 1, ...), 
    2 => array(
      "id" => 3, ...) 
) 

This site является особенно полезным. Надеюсь, это поможет!

Смежные вопросы