2016-10-16 4 views
0

IDをデータベースに送る前に、uri segment($ sef)が配列になっているかどうかをチェックしたいと思います。 そして、私はどちらのソリューションが優れているのか、それとも良いものがあるのか​​を尋ねたいと思います。uriセグメントを確認する

ここ

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

これはアレイの一例であり、Iは、配列

1)

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

2)を検索しようとした方法の例である

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よりも実行に時間がかかるためです。

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データ構造を最初から使用することを目指します。

関連する問題