2015-02-19 3 views
4

Я массив хранится в $ результате, как этотизвлечение значения из заданного массива

$result=$array 

с помощью эха $ результата я получаю следующий массив

Array 
(
    [success] => 1 
    [product] => Array 
     (
      [id] => 83 
      [seo_h1] => 
      [name] => Beer Week 
      [manufacturer] => The Boxer Store 
      [model] => WPEB/0413/74/BW 
      [sku] => WPEB/0413/74/BW 
      [reward] => 0 
      [points] => 0 
      [image] => asd 
      [images] => Array 
       (
        [0] => asd 
       ) 

      [quantity] => 4 
      [price] => Rs.599 
      [special] => 
      [discounts] => Array 
       (
       ) 

      [options] => Array 
       (
        [0] => Array 
         (
          [product_option_id] => 42 
          [option_id] => 25 
          [name] => Size Option 
          [type] => select 
          [option_value] => Array 
           (
            [0] => Array 
             (
              [product_option_value_id] => 165 
              [option_value_id] => 72 
              [name] => Large 
              [option_sku] => 
              [image] => asd 
              [price] => 
              [price_prefix] => + 
             ) 

            [1] => Array 
             (
              [product_option_value_id] => 166 
              [option_value_id] => 73 
              [name] => XL 
              [option_sku] => 
              [image] => asd 
              [price] => 
              [price_prefix] => + 
             ) 

            [2] => Array 
             (
              [product_option_value_id] => 163 
              [option_value_id] => 70 
              [name] => Small 
              [option_sku] => 
              [image] => asd 
              [price] => 
              [price_prefix] => + 
             ) 

            [3] => Array 
             (
              [product_option_value_id] => 164 
              [option_value_id] => 71 
              [name] => Medium 
              [option_sku] => 
              [image] => asd 
              [price] => 
              [price_prefix] => + 
             ) 

           ) 

          [required] => 1 
         ) 

       ) 

      [minimum] => 1 
      [rating] => 0 
      [description] => as 
      [attribute_groups] => Array 
       (
       ) 

      [date_added] => 2014-09-30 12:35:12 
      [date_modified] => 2014-10-17 17:33:46 
      [currency] => INR 
      [status] => 1 
     ) 

) 

я могу получить результат индивидуально подобный

$finalid = $array['product']['id']; 
echo $finalid; 

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

$c=count($result); 
    for ($i=0; $i < $c; $i++) 
    { 
     echo $array[$i]['id']; 
     echo $array[$i]['images'][0]; 
     echo $array[$i]['options'][0]['product_option_id']; 
     echo $array[$i]['images'][0]['option_value'][0]['product_option_value_id']; 
     echo $array[$i]['images'][0]['option_value'][1]['product_option_value_id']; 
    } 

но не отображаются никакого результат может кто-нибудь сказать, как это может быть сделано

+0

Массив в вашем случае является ассоциативным (в виде ключ => значение). Пройдите его с помощью 'foreach ($ array as $ i => $ value) {...}'. Возможно, вам придется сделать это рекурсивно для глубины вложенных массивов. –

ответ

0

Попробуйте это,

<?php 

foreach($result as $res){ 
    echo '<pre>'; echo $res['id']; 

    if(is_array($res['options']) && !empty($res['options'])) { 
     foreach($res['options'] as $option) { 
      echo '<pre>'; echo ($option['product_option_id']); 


      if(is_array($option['option_value']) && !empty($option['option_value'])) { 
       foreach($option['option_value'] as $option_value) { 
        echo '<pre>'; echo $option_value['product_option_value_id']; 
      } 


     } 
    } 
} 
?> 
+0

У меня есть первый результат 3, но для product_option_value_id, я получаю ошибку Фатальная ошибка: нельзя использовать смещение строки как массив – roy

+0

Это означает, что ваш 4-й элемент массива может не иметь product_option_value_id. Я имею в виду $ res ['images'] [0] ['option_value'], это может быть не массив. Поэтому перед каждым шагом проверьте, является ли это массивом is_array ($ res ['images'] [0] ['option_value' ]) – Butterfly

+0

У меня есть еще один массив в option_value, как показано в вопросе, может ли u plz пройти через массив n сказать мне, где я иду не так – roy

1
Use: 
$products = $result['product']; 
foreach ($products as $product) 
{ 
    echo $product['id']; 
    echo $product['images'][0]; 
    echo $product['options'][0]['product_option_id']; 
    echo $product['images'][0]['option_value'][0]['product_option_value_id']; 
    echo $product['images'][0]['option_value'][1]['product_option_value_id']; 
} 
+0

Я получаю сообщение об ошибке Не могу использовать смещение строки в качестве массива – roy

1

Используйте foreach вместо,

foreach ($array['product'] as $product) 
    { 
     echo $product['id']; 
     echo $product['images'][0]; 
     echo $product['options'][0]['product_option_id']; 
     echo $product['options'][0]['option_value'][0]['product_option_value_id']; 
     echo $product['options'][0]['option_value'][1]['product_option_value_id']; 
    } 

Здесь вы будете зацикливаться внутри каждого элемента $array['product'], и для каждого цикла $product будет иметь текущий элемент $array['product'].

Ошибка в вашей попытке была в [$ i]. Для каждого цикла $ i будет иметь 0,1,2 и т. Д., А индекс массива будет $array['product'][0] и т. Д., Но нет такого элемента. Ваш метод работает, если ваш массив равен Indexed array, но здесь это Associative Array.

+0

Я получил ошибку Fatal error: нельзя использовать строковое смещение в качестве массива для echo $ product ['images'] [0]; – roy

+0

Проверьте отредактированный ответ. В вашем вопросе, я думаю, вы положили 'изображения' по ошибке вместо' options' для двух последних операторов 'echo'. Я только что изменил основную проблему. –

+0

теперь я получаю значение id, но все еще имею ту же ошибку для второго эха – roy

1

Вы можете рекурсивная функция, как это печатать многомерные массивы:

function printIt($data){ 
    if (is_array($data)){ 
     foreach ($data as $index=>$slice){ 
      if (is_array($slice)){ 
       printIt($slice); 
      }else{ 
       echo $index.": ".$slice."<br>"; 
      } 
     } 
    }else{ 
     echo $data."<br>"; 
    } 
} 

printIt($yourArray); 
Смежные вопросы