2016-04-23 3 views
-2

У меня есть многомерный массив, который Im пытается вытащить все значения определенного ключа и назначить его переменной.Извлечь значения из многомерного ассоциативного массива

Это массив:

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 не может понять, как цикл через него :(

Спасибо

+0

@PaulCrovella У меня есть человек, поверьте мне, что я не новичок, но массивы - это то, с чем я всегда сталкивался. Я прочитал руководство, и у меня есть код, но он не дает информацию, которую я хочу. –

ответ

1

Я думаю, что вы пытаетесь сделать Wil l разрешается с помощью цикла 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

Я обновил то, что у меня есть. Я в основном не попадаю так глубоко, как хочу в массив. Спасибо за вашу помощь, havent попробовал ваш код выше, но я уверен, что я добавил выше, что я почти там? –

+1

Вам нужно сделать 'echo $ value ['display'];' потому что '$ value' - это массив, который вы ищете. – Rasclatt

+0

В моем примере вместо эхо-значения оно сохраняет все значения 'display' в одномерном массиве. – Rasclatt

0

все, что ключ, вы даже не нужно знать его в Еогеаспе.

вот пример. $ ключ может быть что угодно. вы просто должны проверить это секундным интервал дочернего элемента.

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

И я думаю, что вы программируете Бог, который знает каждую вещь. В каждом знании программирования. Мой PHP является промежуточным, но массивы - это то, на что я никогда не проводил время, да, поэтому с массивами да, я бы сказал, что я есть. Я буду продолжать пытаться выяснить это самостоятельно, потому что я оскорблен вашим комментарием. Вы также выглядите неполными, даже не думайте, что поняли, о чем я спрашиваю. –

Смежные вопросы