我想在将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
)
感谢您的回答!
答案 0 :(得分:0)
这取决于情况。对于小尺寸阵列,它们几乎都需要相同的时间。
1)如果它是一个小数组,你可以使用in_array来完成。
2)如果它是一个大型阵列,你应该使用第一个。因为foreach比array_search需要更多的时间来执行。
答案 1 :(得分:0)
两种方式几乎相同,因此它是一种偏好选择。 虽然有一些调整可能。第一:
$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
数据结构。