我试图在一个关联数组中比较两个价格。我需要将两个价格都拉出来以便我可以进行计算。我的阵列是:
[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;
}
}
它到达第一个if语句但不执行第二个。
答案 0 :(得分:1)
好吧,你的第二个正在执行,但它会在两个表达式上返回false
;这意味着$value
不会被分配到$fqPrice
。
您需要记住strpos()
区分大小写,您可以更改为使用strpos($key, 'fat Quarter')
或使用stripos
功能。
答案 1 :(得分:1)
添加额外的数组维度循环(你可能已经有了这个),我改为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;
?>
如果您对[{1}}感兴趣,可以使用$value[10]