-1

私はこのコード行を持っています:

 $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

どんな助けでも大歓迎です。

4

1 に答える 1

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

serviceIDこれは、各配列要素の をコンパクトに取得する方法です。次のような明示的なループでそれを行うことができます。

$roomservicesids = array();

foreach ($roomsservices as $service) {
    $roomservicesids[] = $service['serviceID'];
}
于 2014-05-05T11:50:57.113 に答える