Set :: extract CakePHP 2.x等效Hash方法?

时间:2014-01-13 04:39:51

标签: php arrays cakephp set

我正在将CakePHP框架从1.3升级到2.4.3。

现在不推荐使用set,我遇到了以下语法问题:

$parentRateGroup = Set::extract('/.[equip_type_id=1]', $parentRates);

这适用于Set,但不适用于等效的Hash方法,即

$parentRateGroup = Hash::extract($parentRates, '/.[equip_type_id=1]'); 

我尝试了很多东西,我能解决的唯一方法是手动循环遍历数组并按键匹配。

这是$ parentRates数组的片段。令人困难的是没有父键来对数组进行分组。

    array(57) {
  [0]=>
  array(21) {
    ["id"]=>
    string(2) "93"
    ["equip_type_id"]=>
    string(1) "1"
    ["rate_group_id"]=>
    string(1) "3"
    ["price_effective_date"]=>
    string(10) "0000-00-00"
    ["price"]=>
    string(5) "85.50"
    ["operator_pay"]=>
    NULL
    ["inherit_from_parent"]=>
    string(5) "Fixed"
    ["inherit_percentage"]=>
    NULL
    ["is_poa"]=>
    bool(false)
    ["is_from"]=>
    bool(false)
    ["rental_unit_id"]=>
    string(1) "2"
    ["equip_min_hire_notes"]=>
    string(31) "Min hire 5 hrs + 1 hr transport"
    ["equip_type_size_grouping_id"]=>
    NULL
    ["size_id_min"]=>
    NULL
    ["size_id_max"]=>
    NULL
    ["RentalUnit"]=>
    array(2) {
      ["id"]=>
      string(1) "2"
      ["name"]=>
      string(8) "per hour"
    }
    ["SizeGrouping"]=>
    array(0) {
    }
    ["SizeMin"]=>
    array(0) {
    }
    ["SizeMax"]=>
    array(0) {
    }
    ["EquipTypesRateGroupAttribute"]=>
    array(10) {
      [0]=>
      array(14) {
        ["id"]=>
        string(3) "658"
        ["equip_type_rate_group_id"]=>
        string(2) "93"
        ["equip_type_attribute_id"]=>
        string(1) "1"
        ["price"]=>
        NULL
        ["operator_pay"]=>
        NULL
        ["inherit_from_parent"]=>
        string(5) "Fixed"
        ["inherit_percentage"]=>
        string(4) "0.00"
        ["is_poa"]=>
        bool(false)
        ["is_from"]=>
        bool(false)
        ["is_combination"]=>
        bool(false)
        ["rental_unit_id"]=>
        NULL
        ["equip_min_hire_notes"]=>
        string(0) ""
        ["EquipTypeAttribute"]=>
        array(6) {
          ["id"]=>
          string(1) "1"
          ["equip_type_id"]=>
          string(1) "1"
          ["attribute"]=>
          string(3) "4x4"
          ["is_active"]=>
          bool(true)
          ["show_in_rate_group"]=>
          bool(true)
          ["stock_code"]=>
          string(2) "BH"
        }
        ["RentalUnit"]=>
        array(0) {
        }

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Hash::extract()不支持将提取路径提供为xpath(您在示例中显示的路径采用xpath格式)。它仅支持以Set::classicExtract()格式提供路径。

因此,您可以选择更新代码或继续使用Set::extract()。即使它被弃用,它仍然可以在2.x中使用。