繁体   English   中英

从给定数组中获取值

[英]fetch value from a given 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'];
    } 

但它没有显示任何结果,任何人都可以告诉它是如何做到的

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

使用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

您可能需要这样的递归函数来打印多维数组:

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);

试试这个,

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


        }
    }
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM