2016-04-23 53 views
-2

我有一個多維數組,它試圖拉取某個鍵的所有值並將其分配給一個變量。從多維關聯數組中拉出值

這是數組:

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 
     ) 
) 

我想永遠得到[顯示]值,即使我不知道上級值是什麼。

功能包含上面的陣列,多個時間表可以添加這就是爲什麼我說我不會總是知道頂層關鍵: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錢跑了無法弄清楚如何循環通過它:(

謝謝

+0

@PaulCrovella我有男人,相信我,我不是新手開發者,但陣列是我一直遇到的問題。 我已閱讀手冊,我有一些代碼,但它沒有提供我想要的信息。 –

回答

1

我想你正在嘗試做的WIL我可以用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 
) 
+0

我更新了迄今爲止的內容。我基本上沒有進入陣列的深度。感謝您的幫助,沒有嘗試過上面的代碼,但我確定我上面添加的即時消息幾乎在那裏? –

+1

您需要執行'echo $ value ['display'];'因爲'$ value'是您要查找的數組。 – Rasclatt

+0

在我的示例中,不是回顯值,而是將所有「顯示」值保存到一維數組中。 – Rasclatt

0

無論是關鍵,你甚至需要知道它在foreach。

這裏是一個樣本。$鍵可以是任何東西,你只需要檢查它秒間隔子元素。

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

我想你是一個編程上帝,他知道每一個單一的編程知識中的每一件事情。 我的PHP是中間的,但數組是我從來沒有花時間,是的,所以數組是我會說我是。 我會繼續試圖找出自己的,因爲我很生氣你的評論。 你的片段也看起來不完整,甚至不認爲你明白我在問什麼。 –