如何初始化一个 PHP 二维数组

3
假设我想要管理一个多维数组,就像这样(伪代码):
Array $colors
* wine,red
* cheese,yellow
* apple, green
* pear,brown

有什么代码可以避免以下表示法,用于初始化数组(假设有一个硬编码的元素列表=?:

$colors[x][y] = 'something';
3个回答

4
$array = array(
   array('wine', 'red'),
   array('cheese', 'yellow'),
   array('apple', 'green'),
   array('pear', 'brown')
);

UPD:
foreach ($array as $v) {
   echo $v[0]; // wine, cheese...
   echo $v[1]; // red, yellow...
}

1
foreach($array as $item){echo $item} 将返回 red yellow green brown..... 那么如何返回 whine, cheese, apple & pear 呢? - Riccardo
2
foreach($array AS $left => $right) echo $left . ' - ' . $right - Fidi
Alexander,谢谢!faileN的语法看起来更聪明!向大家致敬。 - Riccardo
这是我的原始答案,但后来我改变了它 =( - gen_Eric
我没有任何意图去偷任何东西,也不会去偷 :P - Fidi
显示剩余2条评论

3
假设你不需要一个关联数组,因为你的问题中没有提到它。
这是 PHP 提供的优雅语法:
<?php
$colors = array(array("wine","red"),
                array("cheese","yellow"),
                array("apple", "green"),
                array("pear", "brown"));

print_r($arr); // Prints out an array as shown in output
?>

输出:

    Array
(
    [0] => Array
        (
            [0] => wine
            [1] => red
        )

    [1] => Array
        (
            [0] => cheese
            [1] => yellow
        )

    [2] => Array
        (
            [0] => apple
            [1] => green
        )

    [3] => Array
        (
            [0] => pear
            [1] => brown
        )

)

循环访问所有的0:

for($x = 0; $x < count($colors); $x++){
    echo $colors[$x][0];
}

或者

for($colors as $couple){
   echo $couple[0];
}

编辑:看起来你实际上可能更适合使用关联数组。
$colors = array("wine"   => "red",
                "cheese" => "yellow",
                "apple"  => "green",
                "pear"   => "brown");

因为您仍然可以访问密钥,如下所示:
 for($colors as $key => $value){
       echo $key . " is " . $value;
    }

1
很好的示例,展示了如何初始化数组,但是我仍然不知道在foreach循环中如何访问已经初始化的“左列”…… - Riccardo
我希望能避免使用for循环,只使用foreach...不过还是好的!谢谢 - Riccardo - Riccardo
添加了一些内容,你可以使用关联数组访问键,如下所示。 - Alexander Sagen
我选择了Plutov和faileN的回答作为最佳答案,只是因为他们在你完成回答之前就已经回答了,尽管你的回答似乎更详细...谢谢! :-) - Riccardo
如果“消耗品”数据根据您的业务逻辑是唯一的,那么这个答案的关联数组将是最理想和最简化的。如果您希望拥有出现为“红色”和“白色”的葡萄酒,则需要另一种数据结构,因为数组在同一级别上可能没有重复的键。@Riccardo 为了记录,绿色勾号不一定要授予最快的答案,而是最合适/有帮助的答案。 - mickmackusa

1

仅提供链接的“提示”可以作为问题下的评论发布。 - mickmackusa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接