PHP foreach 循环访问多维数组的不同部分


PHP foreach loop accessing different parts of multidimensional array

我仍在尝试了解php foreach循环如何访问它的某些部分。我有一个这样的数组设置:

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

我有一个像这样设置的 foreach 循环:

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

例如,这让我$name"SX-轻量级"吐槽。我将如何访问第 4 [bronze]

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";
  }
}

它可能有助于您理解以二维方式可视化此二维数组,有点像电子表格。

                  [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.

显然,如果数组超出二维,则此可视化将变得不那么有用。

从值引用它。

foreach ($product as  $name => $value) {
    echo $value['bronze']; 
}

在 PHP 中使用 foreach 命令遍历多维数组将取决于数组的结构。

例如:

<?php
// Let's build the array structure
$array[1]['name'] = "John";
$array[1]['phone'] = "+1 888 9567834";
$array[2]['name'] = "Doe";
$array[2]['phone'] = "+44 32 5600 673";
$array[3]['name'] = "Robert";
$array[3]['phone'] = "+1 45 5634 0843";
$array[4] = "Maria";

foreach ($array as $key1 => $value)
{
    echo "<br> Value: $key1 Value: $value<br>";
    // If it's an array, let's do another look inside it
    if (is_array($value))
    {
        foreach ($value as $key2)
        {
            echo "---- $key2 <br>";
        }
    }
    // if it's a simple string (non-array), let's print it
    else
    {
        echo "---- $value";
    }
}

?>

查看本文以获取有关在 PHP 中循环数组的更多信息。