[英]php if condition with search in array values
我有一個PHP的問題,如果條件
我有以下變量和數組:
<?php
$appartamenti = array("97", "98", "99", "100");
$appartamentinoloft = array("97", "98", "99");
$case = array("103", "104", "107", "108");
$casevacanze = array("109", "110", "111", "112");
$stanze = array("115", "116");
$uffici = array("113", "114");
$locali = array("117", "118");
$garage = array("119", "120");
$terreni = array("121", "122");
$cantine = array("123", "124");
$tuttenoterreni = array($appartamenti, $case, $casevacanze, $uffici, $garage, $cantine);
?>
我有這個如果條件:
<?php if ( osc_item_category_id() == $terreni) { ?>
<?php echo $custom_field_value['dimensioni-terreni'] ;?> mq
<?php } else if ( osc_item_category_id() == $tuttenoterreni) { ?>
<?php echo $custom_field_value['dimensioni'] ;?> mq
<?php } else { ?>
<?php } ?>
osc_item_category_id()是一個數字值
但沒有用 我不明白哪里出了問題...
$terreni
是一維數組,而$tuttenoterreni
是多維數組。
對於一維數組,請使用in_array()函數;對於多維數組,請創建一個自定義函數以在此多維數組中查找值。
我為您提供了以下代碼,這些代碼將幫助您在多維數組中查找值。 跟隨in_array()和多維數組
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}
碼:
<?php
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}
if (in_array(osc_item_category_id(),$terreni)) {
echo $custom_field_value['dimensioni-terreni'] ;
} elseif(in_array_r(osc_item_category_id(), $tuttenoterreni)) {
echo $custom_field_value['dimensioni'] ;
} else {
echo "Oops.!! No results found.";
}?>
有用的鏈接:
您不能“直接”檢查。 您正在嘗試比較兩種類型的變量。
PHP數組是指向“多個變量”的指針。
如果我正確閱讀了代碼,則可能是您的函數osc_item_category_id返回了一個整數。 在這種情況下,第一個if將更改為:
<?php if (in_array(osc_item_category_id(), $terreni)) { ?>
您可以在此處查看有關in_array函數的文檔: http : //be2.php.net/manual/zh/function.in-array.php 。
elseif,也有類似的問題。 您已經創建了多維數組(數組的數組)。 您需要在此位置使用array_merge函數(在此處查看文檔: http : //be2.php.net/manual/zh/function.array-merge.php ),以創建包含其他所有值的唯一數組。 然后,您可以按照第一個示例進行檢查:
$tuttenoterreni = array_merge($appartamenti, $case, $casevacanze, $uffici, $garage, $cantine);
<?php } else if (in_array(osc_item_category_id(), $tuttenoterreni)) { ?>
如果osc_item_category_id()函數返回否。 121,122用戶將此功能進行比較。
<?php
$in_id = osc_item_category_id();
if(in_array($in_id,$terreni)){
echo $custom_field_value['dimensioni-terreni'];
}
?>
in_array()函數在數組中搜索特定值。
注意:如果搜索參數是字符串,並且類型參數設置為TRUE,則搜索區分大小寫。
語法:in_array(搜尋,陣列,類型)
范例:
$people = array("Peter", "Joe", "Glenn", "Cleveland");
if (in_array("Glenn", $people)){
echo "Match found";
}
使用功能bool in_array(value,array)
如果數組中存在該值,則此函數返回true
因此,在代碼中修改if和else if條件的內容,例如:
if(in_array(osc_item_category_id(),$ terreni))
我在您的代碼中還注意到的是,在elseif部分中,您嘗試將osc_item_category_id()返回的數值與“數組數組”中的值進行比較,而在“如果”條件下,您正在比較由osc_item_category_id()返回的值。 osc_item_category_id(),值在“數組”中。
如果是這樣,那么在elseif部分中,您需要運行一個foreach循環,使用上述'in_array()'方法將'osc_item_category_id()'返回的值與每個數組進行比較。
希望這可以幫忙!!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.