2016-07-10 6 views
0

私は連想配列内の2つの価格を比較しようとしています。私は計算をするために両方の価格を引き出す必要があります。PHPの1つの関連配列で2つの値を比較する方法

[10] => Array 
    (
     [A Is For Annabelle 681 2 (fat Quarter)] => 2.8500 
     [A Is For Annabelle 681 2 (yardage)] => 7.9500 
    ) 

と私がしようとしているコードは次のとおりです:私が持っている配列です

$fqPrice; 
$ydPrice; 

foreach ($value as $key => $value) { 

    if (strpos($key, 'yd') !== false || strpos($key, 'yardage') !== false) { 
       $ydPrice = $value; 
    } 

    if (strpos($key, 'fq') !== false || strpos($key, 'fat quarter') !== false) { 
       $fqPrice = $value; 
    } 
} 

それは文の場合は、最初に取得しますが、第2 1を実行しません。

+0

いくつかのコードが不明であり、何が問題なのかわかりません。あなたが試しているコードが動作しているかどうかを言わないでください –

+0

@Dagonそれについて残念ですが、それを更新しました – BrittB

+0

あなたのルーピングよりもう一つ次元があります –

答えて

1

、i 'はクリーナー' であるpreg_matchに変更:

<?php 
$value = array(10=>array('A Is For Annabelle 681 2 (fat Quarter)'=>'2.8500','A Is For Annabelle 681 2 (yardage)'=>'7.9500')); 

$ydPrice=$fqPrice=''; 


foreach ($value as $first){ 

    foreach ($first as $key=>$value){ 


     if (preg_match('#yd|yardage#',$key)){ 
      $ydPrice = $value; 
     } 

     if (preg_match('#fq|fat Quarter#',$key)){ 
      $fqPrice = $value; 
     } 
    } 
} 

echo 'y=' . $ydPrice; 
echo 'f=' . $fqPrice; 
?> 

デモ:http://ideone.com/JTJNWx

$value[10]であなただけの関心の場合、あなたはちょうどforeach($value[10] as $key=>$value){}

+0

素晴らしいです。ありがとう! – BrittB

1

うまくいって、2番目のISは実行されていますが、両方の式でfalseを返します。つまり$value$fqPriceに割り当てられません。

あなたはstrpos()はは、あなたがstrpos($key, 'fat Quarter')を使用するか、または代わりにstripos機能を使用するように変更することができますいずれか大文字と小文字が区別されることを覚えておく必要があります。 (あなたはおそらくすでにこれを持っている)、余分な配列の次元ループを追加

関連する問題