2011-01-09 3 views
0

Итак, у меня многомерный массив выглядит так.Как получить массив из многомерного массива

$config = array(
    "First Name" => array(
      "user" => $_POST['firstname'], 
      "limit" => 35, 
     ), 
    "Last Name" => array(
      "user" => $_POST['lastname'], 
      "limit" => 40, 
     ), 
); 

Я хочу использовать массив, в пределах массива конфигурации, так что мой подход заключается в использовании цикла Еогеаспа.

foreach($config as $field => $data) { 

} 

Теперь я знаю, что $ данных будет мой массив, но, кажется, я не могу использовать его вне заявления Еогеасп, потому что я получаю только половину Что уже там. Использование print_r вы можете увидеть, что она показывает за пределами цикла:

Array 
(
    [user] => lastname 
    [limit] => 40 
) 

Но когда внутри цикла, и я использую print_r вот мой результат:

Array 
(
    [user] => firstname 
    [limit] => 35 
) 
Array 
(
    [user] => lastname 
    [limit] => 40 
) 

Я полагаю, что он должен делать что-то с ним быть с петлей foreach. Я попытался запустить foreach в массиве $ data для заполнения другого массива, но это не сработало.

Есть ли способ использовать это вне цикла foreach?

Извините, если это глупый вопрос, я уверен, что на это есть довольно простой ответ, но я просто в тупике и не могу придумать, как это сделать. Благодарю.

ответ

1

$config['First Name'] вернет первый массив, $config['Last Name'] второй.

E.g.

$first_name_config = $config['First Name']; 

Если вы накинут массив, то $data будет указывать на последний элемент массива когда петельные законченным.

Это то, что вы хотите? Если нет, уточните свой вопрос.

В любом случае, вы можете прочитать о Arrays in PHP.

+0

Да, это работает, но я хотел использовать этот массив $ data вне цикла foreach, потому что, если мне нужно запустить цикл в этом массиве $ data, у меня есть две петли внутри друг друга. –

+0

@ Майк Смит: Итак? Если у вас есть вложенные циклы, тогда у вас есть вложенные циклы. В зависимости от размера массивов это не должно быть плохо. Если вы назначаете значения вручную, например '$ data = $ config ['First Name'];/* loop over $ data * /; $ data = $ config ['Last Name'];/* снова зацикливаем данные */', вы делаете то же самое. Если ключи внутренних массивов всегда присутствуют и известны, вам не нужно зацикливаться на них. Вы можете получить к ним доступ напрямую и сохранить внутренний цикл. –

+0

Спасибо. Тогда я собираюсь идти дальше и продолжать это делать. –

0

Вы можете получить доступ к двум подмассивам в виде $ config ['First Name'] и $ config ['Last Name'].

Это что вы хотите сделать?

0

Хитрость заключается в понимании того, что это не многомерный массив, то есть он не сохраняется как сетка или матрица (в отличие от истинных многомерных массивов, например, C). Скорее всего, это массивы, хранящиеся в массиве.

Чтобы ответить на ваш заголовок, это скорее зависит от того, что вы подразумеваете под «извлечения»!

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