从多维关联数组中提取值

Pull out values from multidimensional associative array

我有一个多维数组,我试图提取某个键的所有值并将其分配给一个变量。

这是数组:

Array
(
   [I_would_not_know_the_name_of_this_key] => Array
       (
           [interval] => 3600
           [display] => Once Hourly
       )
   [nor_this_one] => Array
       (
           [interval] => 43200
           [display] => Twice Daily
       )
   [nor_this_one] => Array
       (
           [interval] => 86400
           [display] => Once Daily
       )
) 

即使不知道上层值是什么,我也希望始终获得 [display] 值。

包含上面数组的函数,可以添加更多的时间表,这就是为什么我说我不会总是知道顶级密钥:https://codex.wordpress.org/Function_Reference/wp_get_schedules

到目前为止我的代码:

          $active_cron_schedules = wp_get_schedules(); //this is the 
          foreach ($active_cron_schedules as $key => $value) {
            echo $key;
          }

          ?>

这个输出例如:'I_would_not_know_the_name_of_this_key'、'nor_this_one'、'nor_this_one',我需要深入了解。

数组总是给了我一个 运行 我的钱在 PHP 不知道如何循环它:(

谢谢

无论是什么键,您甚至不需要在 foreach 中知道它。

这是一个示例。 $key 可以是任何东西。你只需要检查它的间隔子元素。

$interval_list = array();
foreach ($array as $key => $el) {
    if (isset($el['interval'])) {
        $interval_list[] = $el['interval'];
    }
}

我认为您尝试做的事情将通过 foreach() 循环或 array_column() 解决,具体取决于您的 php 版本。变量部分很难回答,因为您没有给出您将如何处理变量的示例。一个常见的错误是在循环中覆盖变量,但如果你想要的只是所有 display 值(或任何其他键),请尝试:

function getValByKey($array, $getKey = 'display')
    {
        $new    =    array();
        foreach($array as $arr) {
            if(empty($arr[$getKey]))
                continue;

            $new[]    =    $arr[$getKey];
        }

        return $new;
    }

$result    =    array(
                    'key1'=> array('interval'=>1,'display'=>'1d'),
                    'key2'=> array('interval'=>2,'display'=>'2d'),
                    'key3'=> array('interval'=>3,'display'=>'3d')
                );
// To use
$display    =    getValByKey($result);
print_r($display);

// Array column has the same basic function, but
// Only available in PHP 5 >= 5.5.0, PHP 7
$display    =    array_column($result,'display');

print_r($display);

两者都给你:

Array
(
    [0] => 1d
    [1] => 2d
    [2] => 3d
)