2016-02-08 3 views
1

Я все еще пытаюсь понять, как работает петля php foreach с доступом к определенным частям. У меня есть настройки массива, как это:PHP foreach loop, обращаясь к различным частям многомерного массива

$product = Array 
(
    [SX- Light weight] => Array 
     (
      [bronze] => 4 
      [silver] => 5 
      [gold] => 6 
     ) 

    [SS- Light weight] => Array 
     (
      [bronze] => 4 
      [silver] => 5 
      [gold] => 6 
     ) 
) 

У меня есть цикл Еогеасп настроить таким образом:

foreach ($product as $name => $value) { 
     # code... 
     echo '<option value="'.$name.'">'.$name.'</option>'; 

    } 

Это выплевывает меня $name как «SX- Легкий вес», например. Как мне получить доступ к номеру [bronze]?

+1

Чтобы получить доступ к элементам вспомогательного массива, вам нужно использовать другой цикл foreach или просто получить доступ к ним напрямую через $ value ['bronze'] 'и т. Д. – Ghost

+0

* Вы должны указывать индексы своих массивов в кавычках. Не делать этого будет работать, но вызывать предупреждения. – fragmentedreality

ответ

0

Это может помочь вашему пониманию визуализировать этот двумерный массив в двух измерениях , вроде как электронная таблица.

    [bronze][silver][gold] 
[SX- Light weight] 4  5  6 
[SS- Light weight] 4  5  6 

В foreach петли над рядами. Это означает, что в

foreach ($product as $name => $value) { 

$value не одно значение, это строка, массив, содержащий значения бронзы, серебра, золота и столбцов. Таким образом, в первой итерации этого цикла, например, $value будет содержать

array('bronze' => 4, 'silver' => 5, 'gold' => 6) 

Вы можете перебрать каждый столбец в строке и сделать что-то с этими значениями, используя другой foreach, но если вам просто нужно для получения доступа к определенный столбец, вы можете использовать свой ключ, чтобы указать, что вы хотите, как это:

echo $value['bronze']; 

Думая о содержимом двумерного массива в виде строк и столбцов является довольно распространенной визуализации. Фактически, в PHP 5.5+ есть функция array_column, которая позволяет вытащить все значения из определенного столбца в новый массив.

$bronze = array_column($product, 'bronze'); // for example. 

Очевидно, что если массив выходит за пределы двух измерений, эта визуализация становится менее полезной.

0

Ссылка на это значение.

foreach ($product as $name => $value) { 
    echo $value['bronze']; 
} 
2
foreach ($product as $name => $value) { 
    // display 'bronze' index's value (assuming it is defined) 
    echo 'For product '.$name.', bronze value = '.$value['bronze']; 
} 

Вы можете также, чтобы отобразить все «металлы» с использованием вложенного цикла:

foreach ($product as $name => $value) 
{ 
    echo "For product ".$name.", values are: \n"; 

    // assuming $value is an associative array 
    foreach ($value as $metal => $number) 
    { 
    echo "- ".$metal.": ".$number."\n"; 
    } 
} 
Смежные вопросы