2012-02-22 6 views
0

Привет, новое для массива может кто-то помочь? У меня массив в массиве. Как я могу получить только все [ключевые] данные из массива [permissions].Чтение данных из массива

Array 
(
    [name] => john 
    [password] => 150211444 
    [permissions] => Array 
     (
      [0] => Array 
       (
        [key] => 2 
        [moduleId] => 13 
        [permission] => 1 
       ) 

      [1] => Array 
       (
        [key] => 3 
        [moduleId] => 13 
        [permission] => 1 
       ) 

      [2] => Array 
       (
        [key] => 8 
        [moduleId] => 13 
        [permission] => 1 
       ) 

     ) 
    ) 
+4

Время для PHP книги. –

+1

Возможный дубликат [Параметры PHP для извлечения данных из массива?] (Http://stackoverflow.com/questions/1795139/php-options-for-extracting-data-from-an-array) –

+1

http: // php .net/manual/en/function.array-keys.php –

ответ

2

Вы могли бы сделать

$keys = array(); 
foreach($arr['permissions'] as $key => $value){ 
    $keys[] = $value["key"] 
} 

и $keys массив, который содержит все [key] значения

+0

thats it thats work, спасибо – Hispateos

+1

Почему вы не используете $ value ['key'] в цикле? – silly

+1

@ silly хорошая точка, я исправил ее –

1

Heres мои исправленные ответ использовать константы или переменные для имен индексов и проверки массива ключ сначала с помощью array_key_exists (а не с isset)

const INDEX_PERMISSIONS = 'permissions'; 
const INDEX_KEY = 'key'; 

$keys = array(); 
if(true === array_key_exists(INDEX_PERMISSIONS, $array)) { 
    $inner = $array[INDEX_PERMISSIONS]; 
     if(null != $inner && is_array($inner)) { 
      foreach($inner as $inner_values) { 
       if(null !== $inner_values && is_array($inner_values) && array_key_exists(INDEX_KEY, $inner_values)) { 
       $keys[] = $inner_values[INDEX_KEY]; 
      } 
     } 
    } 

} 
print_r($keys); 
+1

+1 для проверки ключа ... привет глупо. до смерти? – mindandmedia

+0

В этом примере 'array_keys()' будет возвращать '[key]', '[moduleId]' и '[разрешение]', который не является намерением OP –

+0

@RobAllen правильно, я неправильно понял вопрос. исправляется сейчас – silly

0

Предполагая, что вы знаете, что это всегда называется permissions и предполагая, что вы создаете вар называется $myArray разобрать через:

<?php 

foreach($myArray['permissions'] as $record) 
{ 


    echo $record['key']; 

} 

?> 
+0

эта работа тоже спасибо. – Hispateos

0
function iter($item, $key) { 
    echo $key, $item['permission'], PHP_EOL; 
} 

array_walk($array['permissions'], 'iter');