Checking uri segment



在将id发送到数据库之前,我想检查uri段($sef)是否在数组中。我想问哪个解决方案更好,或者是否有更好的办法。

下面是我如何搜索数组 的例子

1)

  if(array_search($sef, array_column($array,'sef'))) {
    //find id and send it to DB
  } else {
    //wrong sef
  }

2)

foreach($array as $k => $v) {
    if( in_array($sef, $v)) {
       return $v['id']; break;  
       } else {
       //wrong sef
       } 
   }

这是一个数组

的例子
Array
(
    [0] => Array
        (
            [sef] =>some-sef1
            [id] => 39
        )
    [1] => Array
        (
            [sef] => some-sef2
            [id] => 20
        )
    [2] => Array
        (
            [sef] => some-sef3
            [id] => 38
        )

谢谢你的回答!

这要看情况。对于较小的数组,这两种方法所花费的时间几乎相同。

1)如果它是一个小数组,你可以使用in_array.

2)如果它是一个大数组,你应该使用第一个。因为foreach的执行时间比array_search要长。

两种方法几乎相同,所以这是一个首选项选择。不过还是有一些调整是可能的。第一:

$sef_ids = array_column($array, 'id', 'sef');
if (isset($sef_ids[$sef])) { $id = $sef_ids[$sef]; ... }
第二:

foreach ($array as $k => $v) {
    if ($v['sef'] === $sef) { $id = $v['id']; ... }
}

现在第一个看起来更快(没有检查),但它仍然是微优化,除非你使用大数组。我的目标是从一开始就使用$sef_ids数据结构。

相关内容

  • 没有找到相关文章

最新更新