【问题标题】:How to dig through a multidimentional array?如何挖掘多维数组?
【发布时间】:2012-02-17 16:16:04
【问题描述】:
Array (
  [0] => Array (
    [PACKAGE] => Array (
      [0] => Array (
        [ATTRIBUTES] => Array (
          [ID] => 0
        )
        [ZIPORIGINATION] => Array (
          [0] => Array (
            [VALUE] => 32751
          )
        )
        [ZIPDESTINATION] => Array (
          [0] => Array (
            [VALUE] => 55967
          )
        )
        [POUNDS] => Array (
          [0] => Array (
            [VALUE] => 0
          )
        )
        [OUNCES] => Array (
          [0] => Array (
            [VALUE] => 9
          )
        )
        [CONTAINER] => Array (
          [0] => Array (
            [VALUE] => Flat Rate Box
          )
        )
        [SIZE] => Array (
          [0] => Array (
            [VALUE] => REGULAR
          )
        )
        [ZONE] => Array (
          [0] => Array (
            [VALUE] => 6
          )
        )
        [POSTAGE] => Array (
          [0] => Array (
            [MAILSERVICE] => Array (
              [0] => Array (
                [VALUE] => Priority Mail<sup>&reg;</sup> Medium Flat Rate Box
              )
            )
            [RATE] => Array (
              [0] => Array (
                [VALUE] => 11.35
              )
            )
          )
        )
      )
    )
  )
)

Array (
  [0] => price Object (
    [mailservice] => Priority Mail<sup>&reg;</sup> Medium Flat Rate Box
    [rate] => 11.35
  )
)

...是的。我需要搜索这些并提取 RATE 值,这里是 11.35。

到目前为止,For/each 循环都让我失望了,还有其他想法吗?

【问题讨论】:

  • 这是我从 print_r() 得到的结果,我不知道如何格式化它。 ://
  • 使用页面源中的输出。
  • 等一下,我会帮你格式化,因为那太可恶了。
  • 挖掘您的输出,您似乎正在为 2 个变量显示 print_r;你想要哪个值?第一个数组还是第二个数组中的值?
  • 无论哪一个,我都想要速率值。

标签: php arrays multidimensional-array foreach


【解决方案1】:

这是为您执行此操作的函数:

findKey($myarray,$searchKey) {
    foreach($myarray as $key=>$value) {
       if($key==$searchKey) return $value;
       if(is_array($value) || is_object($value)) {
           $returned = findKey($value,$searchKey);
           if($returned) return $returned;
       }
    }
    return false;
}

// call it like this:
findKey($yourArray,"rate")

【讨论】:

  • 非常接近我要回答的问题。一个建议是返回 null 而不是 false,因为所需的值可能是布尔值。
  • 不在 OP 的示例中。但如果泛化,期望的值也可能是 null!
  • 可捕获的致命错误:无法将类价格对象转换为第 24 行 /address/shipping.php 中的字符串。当我尝试回显它时,它给了我这个错误。
  • 感谢大家的帮助!
猜你喜欢
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 1970-01-01
相关资源
最近更新 更多