2017-05-27 15 views
0

は私の配列です:検索配列と他のキーの値を取得

[0] => Array 
    (
     [messages] => Array 
      (
       [0] => Array 
        (
         [message] => This is for sandwich 
       ) 
       [1] => Array 
        (
         [message] => This message is for burger 
       ) 

     ) 
     [price] => Array 
      (
       [amount] => 5 
       [currency] => USD 
     ) 

[1] => Array 
    (
     [messages] => Array 
      (
       [0] => Array 
        (
         [message] => This is a message for a delicious hotdog 
       ) 

     ) 
     [price] => Array 
      (
       [amount] => 3 
       [currency] => USD 
     ) 
) 

私はすべてのアレイで検索すると、私は言葉「バーガー」を検索したいです。私は価格が5である "バーガー"の金額を取得したいと思います。私は "ホットドッグ"という単語を検索すると、それは価格の金額3を返します。私はそれをどのようにすることができますか?ありがとう

+3

もすでに試みているものをご提示ください。 –

+0

似たような解決方法を使って、正確な値の一致を 'pregmatch'や' strpos'に置き換えてください。https://stackoverflow.com/questions/8102221/php-multidimensional-array-searching-find-key-by-specific-value –

+0

@ GayanLはあなたが例を示すことができますか?ありがとう –

答えて

2

あなたはforeachループを使用して、strposまたはstriposを使用することができます。ここで

foreach ($array as $row) { 
    foreach ($row['messages'] as $row2) { 
     if(strpos($row2['message'], 'burger') !== false) { 
      $stringFound = true; 
     } else { 
      $stringFound = false; 
     } 
    } 
    if($stringFound === true) { 
     $price = $row['price']['amount']; 
    } else { 
     $price = '0'; 
    } 
} 
echo $price; 
2

$arrayあなたの配列です。私はそれが働くかもしれないと思う。

<?php 
    $check = 'hotdog'; 

    foreach($array as $products){ 
     foreach($products['messages'] as $messages){ 
     if (strpos($messages['message'], $check) !== false) { 
      echo $check.' Found. Price'. $products['price']['amount'] .'</br>' ; 
     } 
     } 
    } 
?> 
2

我々はarray_columnimplodepreg_matchを使用しています。

1.array_column

配列

2.implodeの特定の列を取得するためにそれの文字列にするために接着剤を配列に結合します。

3,preg_matchここでは、指定された文字列内の特定の単語を一致させるためです。

Try this code snippet here

$toSearch="hotdog"; 

foreach($array as $key => $value) 
{ 
    if(preg_match("/\b$toSearch\b/",implode(",",array_column($value["messages"],"message")))) 
    { 
     echo $value["price"]["amount"]; 
    } 
} 
関連する問題