搜索多维数组以获取密钥,然后在同一数组中查找特定密钥

时间:2014-09-14 22:32:56

标签: php gmail-api

我终于与Gmail API in PHP破土动工,但我无法从标题中获取发件人,主题和时间

我有一个看起来像这样但仍在继续的数组:

Array
(
    [0] => Google_Service_Gmail_MessagePartHeader Object
        (
            [name] => Subject
            [value] => My Subject
            [modelData:protected] => Array
                (
                )

            [processed:protected] => Array
                (
                )

        )

    [1] => Google_Service_Gmail_MessagePartHeader Object
        (
            [name] => From
            [value] => John Doe
            [modelData:protected] => Array
                (
                )

            [processed:protected] => Array
                (
                )

        )

简而言之,我只需要一种搜索​​数组的方法['name'] => 'Date',然后我需要在变量中存储['value']键中的内容,以便稍后回复它。我应该使用array_search这样的东西,还是有更好的方法?

3 个答案:

答案 0 :(得分:0)

如果您不关心标题顺序(99%的客户赢了),您可以将其转换为: 名称的地图/字典的名称,价值列表=>列表与LT;值取代。对于你关心的大多数标题,列表中只有一个值,但这会使得/ subject / to header变得微不足道。

在python中它将是:

headers = {}
for header in header_list:
  if header['name'] not in headers:
    headers['name'] = []
  headers['name'].append(header['value'])

答案 1 :(得分:0)

最简单的方法是遍历数组并检查name属性值:

$date_value = '';
foreach ($headers as $header) {
    if ('Date' == $header->name) {
        $date_value = $header->value;
        break;
    }
}
var_dump($date_value);

此处$headers是您的数组。

答案 2 :(得分:0)

// Grab only those elements of the array where the items ["name"] key is Date  
$b=array_filter($array,function($x){if ($x["name"]=="Date") return true; else return false;});
// Now $b is an array containing all elements of $a that are dates

// Then, echo each one of $b's "value"  
array_walk($b,function($k,$v){echo $b[$k]["value"];});