0

大家好,我有以下内容(这是我正在尝试的一个例子,我实际拥有的是更大的):

$array= array();
array_push($array,$var['bookshopname']);
$array[$var['bookshopname']]=array('opentime'=>$var1,'closetime'=>$var2);

foreach($array as $var)
{
print_r($var);
}

我得到:

Storename1
Array ( [opentime] => 12 [closetime] => 17 ) 
Storename2
Array ( [opentime] => 13 [closetime] => 19 ) 

所以如果我计算数组有4个元素如果我尝试了以下

foreach($array as $var)
{
print_r($var['opentime']);
}

它在第一个结果(Storename1)上中断。

我想要以下

 array(
       Storename1 => array(opentime => ...)
       Storename2 => array(opentime => ...)
      )

我得到了这个:

 array(
       [0] => Storename1[Storename1] => Array ( [opentime ] =>....
       [1] => Storename2[Storename2] => Array ( [opentime ] =>....
      )

我无法弄清楚为什么它会使用名称创建这两个额外的结果

回应 Oriol

当我尝试进一步更新它时

例如:

$array[$var['bookshopname']] = 
      array('opentime'=>$array[$var['bookshopname']]['opentime']+1,
            'closetime'=>$array[$var['bookshopname']]['closetime']-2);

然后它不会更新值,而只是替换为我尝试添加或减去的值

4

1 回答 1

3

只需使用

$array= array();
$array[$var['bookshopname']]=array('opentime'=>$var1,'closetime'=>$var2);

您的代码会创建额外的条目,因为

array_push($array,$var['bookshopname']);

也许您应该阅读http://php.net/manual/en/function.array-push.php以更好地了解array_push什么

编辑

如果你只是想修改值,试试这个

$array[$var['bookshopname']]['opentime'] += 1;
$array[$var['bookshopname']]['closetime'] -= 2;
于 2013-08-12T23:52:35.953 回答