【问题标题】:How to rewrite this PHP code that uses array_map?如何重写这个使用 array_map 的 PHP 代码?
【发布时间】:2014-05-05 19:56:27
【问题描述】:

我有这行代码:

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

它在我的 PHP > 5.3 的服务器上运行良好 在另一台服务器上,我的 PHP

 $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 是一个函数。你为什么要把它传递给in_array
  • 我正在尝试检查两个数组中是否存在 serviceID 并仅打印一次表单。你可以在这里看到更多:stackoverflow.com/questions/22460469/…

标签: php array-map


【解决方案1】:
$roomservicesids = array_map(function($v){ return $v['serviceID'];}, $roomsservices);

这是获取每个数组元素的serviceID 的一种紧凑方式。您可以使用这样的显式循环来做到这一点:

$roomservicesids = array();

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

【讨论】:

  • 谢谢 Manoj。我忽略了这一点。只要系统允许,我就会接受你的回答...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 2022-07-13
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2011-06-28
相关资源
最近更新 更多