在将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
数据结构。