2017-03-23 5 views
1

ここに非機能コードがあります。何も返さない。私が使用している構文が間違っているかどうかは不明です。多次元配列のarray_filterが機能しない

function findNeedle($array, $needle) { 
     return array_values(array_filter($array, function($arrayValue) use($needle) { return $arrayValue['lp_url'] == $needle; })); 
} 
$myarray = 
     0 => 
     array (
      'lp_url' => 'http://example.com/nx/?utm_source=aa&utm_medium=referral', 
      'lp_term_id' => 1435949468, 
      'aff_term_id' => 1445295565, 
      'offer_term_id' => 1445295996, 
      ), 
     1 => 
     array (
      'lp_url' => 'http://example.org/nx/?utm_source=aa&utm_medium=referral', 
      'lp_term_id' => 1435949468, 
      'aff_term_id' => 1445295559, 
      'offer_term_id' => 1445295989, 
      ), 
     ); 

$needle = 'http://example.com/nx/?utm_source=aa&utm_medium=referral'; 
if (is_array($myarray)) { 
foreach ($myarray as $value) { 
    if (is_array($value)) 
    { 
     $x = findNeedle($value, $needle); 
    } 
} 
+0

たぶん、あなたが望むものを説明します。コードは機能しないので、私たちにはあまり言いません。 – AbraCadaver

+0

一致が見つかった場合はtrueを返し、一致しない場合はfalseを返します(lp_domainキー)。 – hvs

+0

'in_array($ needle、array_column($ myarray、 'lp_url'));は、一致するかどうか' true'または 'false'を返します。 – AbraCadaver

答えて

1

lp_url列のデータの配列を抽出し、$needleをチェック:

if(in_array($needle, array_column($myarray, 'lp_url'))) { 
    echo "Found"; 
} else { 
    echo "Not found"; 
}