数组映射-如何重写这个使用array_map的PHP代码


array map - How to rewrite this PHP code that uses array_map?

我有这行代码:

 $roomservicesids = array_map(function($v){ return $v['serviceID'];}, $roomsservices);

它在我有PHP>5.3的服务器上运行得很好。在另一台服务器上,我有PHP<5.3,它不起作用。我正试图这样重写:

 $roomservicesids = create_function('$v', 'return $v["serviceID"];,$roomsservices'); 
 foreach ($services as $key1=>$value){
     if(in_array($value['serviceID'], $roomservicesids)){ //error is in this line
         echo "<input type='checkbox' name='services[]' id= '".$value['serviceID']."'  value='" .$value['serviceID'] ."'  checked = 'checked' class='zcheckbox' />";    
     }else{
         echo "<input type='checkbox' name='services[]' id= '".$value['serviceID']."'  value='" .$value['serviceID'] ."' class='zcheckbox' />";
     }
     echo "<label>" .$value['serviceName']. "</label>";
  }  

但我得到一个错误,说:

Message: in_array() [function.in-array]: Wrong datatype for second argument
Line Number: 104

任何帮助都将不胜感激。

$roomservicesids = array_map(function($v){ return $v['serviceID'];}, $roomsservices);

这是一种获取每个数组元素的CCD_ 1的紧凑方法。你可以用这样一个显式循环来完成:

$roomservicesids = array();
foreach ($roomsservices as $service) {
    $roomservicesids[] = $service['serviceID'];
}