簡體   English   中英

php,如果條件與數組值搜索

[英]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.";
}?>

有用的鏈接:

  1. in_array()-PHP手冊
  2. in_array()和多維數組

您不能“直接”檢查。 您正在嘗試比較兩種類型的變量。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM