从关联的海量数组中选择值

时间:2014-04-04 10:03:02

标签: php arrays

我试图从大规模阵列中获得一些价值,并且出现了一些问题。 我有这样的阵列:

array(2) {
  [0]=>
  array(23) {
    ["ITEM_ID"]=>
    int(2331)
    ["ITEM_TYPE_ID"]=>
    string(1) "1"
    ["CART_ITEM_ID"]=>
    string(0) ""
    ["SAVED_TYPE_ID"]=>
    string(0) ""
    ["ITEM_NAME"]=>
    string(17) "TEST STOCK LEVELS"
    ["ERROR"]=>
    string(0) ""
    ["PROPERTIES"]=>
    array(1) {
      [522]=>
      array(1) {
        [0]=>
        string(4) "1122"
      }
    }
    ["PROPERTIES_INFO"]=>
    array(1) {
      [522]=>
      array(12) {
        ["USAGE_TYPE"]=>
        string(1) "1"
        ["CONTROL"]=>
        string(7) "LISTBOX"
        ["TYPE"]=>
        string(1) "1"
        ["NAME"]=>
        string(11) "TEST OPTION"
        ["VALUES"]=>
        array(1) {
          [0]=>
          string(4) "1122"
        }
        ["REQUIRED"]=>
        string(1) "1"
        ["PARENT_PROPERTY_ID"]=>
        string(0) ""
        ["PARENT_VALUE_ID"]=>
        string(0) ""
        ["TEXT"]=>
        array(0) {
        }
        ["CONTROL_PRICE"]=>
        int(0)
        ["ORDER"]=>
        string(1) "1"
        ["QUANTITY_ACTION"]=>
        string(1) "1"
      }
    }
    ["PROPERTIES_PRICE"]=>
    float(10)
    ["PROPERTIES_PERCENTAGE"]=>
    int(0)
    ["PROPERTIES_BUYING"]=>
    int(0)
    ["PROPERTIES_DISCOUNT"]=>
    int(0)
    ["PROPERTIES_MORE"]=>
    string(1) "0"
    ["COMPONENTS"]=>
    array(0) {
    }
    ["QUANTITY"]=>
    int(11)
    ["TAX_FREE"]=>
    string(1) "0"
    ["DISCOUNT"]=>
    int(1)
    ["BUYING_PRICE"]=>
    string(0) ""
    ["PRICE_EDIT"]=>
    string(1) "0"
    ["PRICE"]=>
    string(5) "10.00"
    ["CHECK_PRICE"]=>
    float(20)
    ["MAX_ITEM_DISCOUNT"]=>
    float(20)
    ["CART_PRICE"]=>
    float(20)
  }
  [1]=>
  array(23) {
    ["ITEM_ID"]=>
    int(2331)
    ["ITEM_TYPE_ID"]=>
    string(1) "1"
    ["CART_ITEM_ID"]=>
    string(0) ""
    ["SAVED_TYPE_ID"]=>
    string(0) ""
    ["ITEM_NAME"]=>
    string(17) "TEST STOCK LEVELS"
    ["ERROR"]=>
    string(0) ""
    ["PROPERTIES"]=>
    array(1) {
      [522]=>
      array(1) {
        [0]=>
        string(4) "1123"
      }
    }
    ["PROPERTIES_INFO"]=>
    array(1) {
      [522]=>
      array(12) {
        ["USAGE_TYPE"]=>
        string(1) "1"
        ["CONTROL"]=>
        string(7) "LISTBOX"
        ["TYPE"]=>
        string(1) "1"
        ["NAME"]=>
        string(11) "TEST OPTION"
        ["VALUES"]=>
        array(1) {
          [0]=>
          string(4) "1123"
        }
        ["REQUIRED"]=>
        string(1) "1"
        ["PARENT_PROPERTY_ID"]=>
        string(0) ""
        ["PARENT_VALUE_ID"]=>
        string(0) ""
        ["TEXT"]=>
        array(0) {
        }
        ["CONTROL_PRICE"]=>
        int(0)
        ["ORDER"]=>
        string(1) "1"
        ["QUANTITY_ACTION"]=>
        string(1) "1"
      }
    }
    ["PROPERTIES_PRICE"]=>
    float(20)
    ["PROPERTIES_PERCENTAGE"]=>
    int(0)
    ["PROPERTIES_BUYING"]=>
    int(0)
    ["PROPERTIES_DISCOUNT"]=>
    int(0)
    ["PROPERTIES_MORE"]=>
    string(1) "0"
    ["COMPONENTS"]=>
    array(0) {
    }
    ["QUANTITY"]=>
    int(5)
    ["TAX_FREE"]=>
    string(1) "0"
    ["DISCOUNT"]=>
    int(1)
    ["BUYING_PRICE"]=>
    string(0) ""
    ["PRICE_EDIT"]=>
    string(1) "0"
    ["PRICE"]=>
    string(5) "10.00"
    ["CHECK_PRICE"]=>
    float(30)
    ["MAX_ITEM_DISCOUNT"]=>
    float(30)
    ["CART_PRICE"]=>
    float(30)
  }
}

在循环此数组之前,我收到一些property_id(例如1123)。 我需要检查此property_id是否与此元素匹配(在我的情况下为1122)

["PROPERTIES"]=>
    array(1) {
      [522]=>
      array(1) {
        [0]=>
        string(4) "1122"
      }
    }

然后选择其数量属性(在我的情况下是这个元素)

 ["QUANTITY"]=>
int(11)

问题是确定从哪个数组中选择此属性,因为首先我需要将我的接收值与现有的数组进行比较(在我的情况下为1122)。

1 个答案:

答案 0 :(得分:1)

我认为你可以用更好的组织阵列更快地做到这一点。因为它是我会循环。

类似的东西:

 $quantity = 0;
 $which_array = -1;
 foreach($massive as $key=>$value){

   if(isset($value['PROPERTIES_INFO'])){
     $copy_properties = $value['PROPERTIES_INFO'];
     $property_first = reset($copy_properties);
     $id_property = key($property_first);
     if($id_property == $what_id_you_are_looking_for){
       $quantity = $value['QUANTITY'];//delete one of this
       //or I don't know wich quantity you want so I put them both
       $quantity = $value['PROPERTIES_INFO'][$id_property ]['QUANTITY_ACTION'];//delete one of this
       $which_array = $key;
       break;
     }
   }
 }