这些陈述是否相等? PHP多维数组

时间:2016-02-22 20:14:11

标签: php arrays multidimensional-array

我的问题有两个部分。第一个问题,可以这种方式分配多维数组:

$sandwhich => array(
    'bread', 'meat', 'tomato'
);
$cereal => array(
    'milk', 'cherrios', 'bannana'
);
$food = array(
    $sandwhich, $cereal
);

我的第二个问题是,上面的$food数组是否等同于:

$food = array(
    $sandwhich => array(
        'bread', 'meat', 'tomato'
    ) 
    $cereal => array(
        'milk', 'cherrios', 'bannana'
    )
);

谢谢,

2 个答案:

答案 0 :(得分:1)

不,他们不等同......

第一个只定义一个包含另外两个数组的数组,每个数组包含3个字符串。这与你完全写出来没有什么不同。

var time = 5;
function functionary() {
var red = document.getElementById('redL')
var yellow = document.getElementById('yellowL')
var green = document.getElementById('greenL')
var Colours = ["#FF0000","#FFB300","#05FF0D","#7A0000","#7A5C00","#008000"];
setInterval(function(){
if(time == 5){
    red.style.background = Colours[0]; // May need spacebar between index    number
    yellow.style.background = Colours[4];
    green.style.background = Colours[5];
    time = 1;
} 
else if(time == 2 || time == 4){
    red.style.background = Colours[3];
    yellow.style.background = Colours[1];
    green.style.background = Colours[5];
}
else if(time == 3){
    red.style.background = Colours[3];
    yellow.style.background = Colours[4];
    green.style.background = Colours[2];
}, 3000)
};

第二个会触发$food = array(); $food[0] = array(); $food[0][0] = 'bread'; $food[0][1] = 'meat'; etc... $food[1][2] = 'bannana'; ,因为您尚未定义undefined variable$sandwich,并且您将两个子数组分配给空字符串键:

$cereal

由于这两个键是相同的(空字符串),你最终会得到一个包含一个其他数组的数组,最后一个数组。

如果先前将$food = array( "" => array(...), "" => array(...) ); $sandwich定义为数组,那么您将获得非法的偏移类型警告并最终得到一个空数组。

答案 1 :(得分:1)

首先,我们无法使用=>进行分配,而是使用运算符=

对于第一部分,这是正确的语法:

$sandwhich = array('bread', 'meat', 'tomato');

$cereal = array('milk', 'cherrios', 'bannana');

$food = array();
$food[] = $sandwhich;
$food[] = $cereal;

第二部分:

$food = array(
    'sandwich' => array('bread', 'meat', 'tomato'), 
    'cereal' => array('milk', 'cherrios', 'bannana')
);