2013-05-12 152 views
0

我有一个多维数组,我想取代它的timestamp场..更换多维数组值

Array 
(
    [new_messages] => 0 
    [0] => Array 
     (
      [id] => 42 
      [sender] => 4 
      [receiver] => 4 
      [message] => Test 
      [timestamp] => 1368178683 
      [read] => 1 
      [s_deleted] => 0 
      [r_deleted] => 0 
     ) 

    [1] => Array 
     (
      [id] => 44 
      [sender] => 4 
      [receiver] => 4 
      [message] => test2 
      [timestamp] => 1368181485 
      [read] => 1 
      [s_deleted] => 0 
      [r_deleted] => 0 
     ) 
) 

我运行:

foreach ($messageArray as $key => $row) { 
    $orderByDate[$key] = $row['timestamp']; 
    $newTimestamp = date("d-M-Y H:i:s", $row['timestamp']); 
    $messageArray[$key]['timestamp'] = $newTimestamp; 
} 

它的工作,取代它,但我得到一个警告:

警告:不能使用标量值作为数组

为什么?以及如何解决它?

回答

1

它看起来像你的一些根数组元素不是数组,如:

[new_messages] => 0 

所以没有timestamp键进入。只需添加:

if(!is_array($row)) 
    continue; 
0

也想改变的关键new_messages的时间戳,但没有一个(它只是一个值)。

更改这个

foreach ($messageArray as $key => $row) { 
    if (!is_array($row) || !array_key_exists('timestamp', $row)) { 
    continue; 
    } 
    $orderByDate[$key] = $row['timestamp']; 
    $newTimestamp = date("d-M-Y H:i:s", $row['timestamp']); 
    $messageArray[$key]['timestamp'] = $newTimestamp; 
}