Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP foreach循环访问多维数组的不同部分_Php_Arrays_Foreach - Fatal编程技术网

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

PHP foreach循环访问多维数组的不同部分,php,arrays,foreach,Php,Arrays,Foreach,我仍在试图理解php foreach循环如何访问它的某些部分。我的阵列设置如下所示: $product = Array ( [SX- Light weight] => Array ( [bronze] => 4 [silver] => 5 [gold] => 6 ) [SS- Light weight] => 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
        )
)
echo $value['bronze'];
我有一个foreach循环设置如下:

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

    }
foreach($product as$name=>$value){
#代码。。。
回显“.$name.”;
}

比如说,我就把
$name
称为“SX-轻量级”。如何访问编号4的
[brown]

从值中引用它

foreach ($product as  $name => $value) {
    echo $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
对这些值执行操作,但如果您只需要访问特定列,则可以使用其键指定所需的列,如下所示:

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

    [SS- Light weight] => Array
        (
            [bronze] => 4
            [silver] => 5
            [gold] => 6
        )
)
echo $value['bronze'];
将二维数组的内容视为行和列是一种非常常见的可视化方式。事实上,在PHP5.5+中有一个
array\u column
函数,它允许您将特定列中的所有值拉入一个新数组

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

显然,如果数组超出了二维范围,这种可视化就会变得不那么有用。

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


?>

要访问子数组元素,您需要使用另一个
foreach
循环,或者直接通过
$value['brown']
等访问它们。*您应该在数组的索引中加上引号。不这样做会起作用,但会发出警告。