从给定数组中获取值

时间:2015-02-19 10:52:25

标签: php arrays multidimensional-array

我有一个存储在$ result中的数组,如此

$result=$array

使用echo $ result我得到以下数组

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;

但希望使用for循环获取每个数据,甚至是最内部的值。为此,我尝试了这个

$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'];
    } 

但它没有显示任何结果,任何人都可以告诉它如何完成

4 个答案:

答案 0 :(得分: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'];
} 

答案 1 :(得分: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

答案 2 :(得分: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);

答案 3 :(得分: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'];
            }


        }
    }
}
?>