php如果条件搜索数组值

时间:2017-05-26 12:08:00

标签: php arrays

我遇到了php if条件

的问题

我有跟随变量和数组:

<?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()是数值

但不行。 我不明白问题出在哪里......

5 个答案:

答案 0 :(得分:2)

$terreni是单维数组,$tuttenoterreni是多维数组。

对于单维数组,使用in_array()函数,对于多维数组,创建自定义函数以在此多维数组中查找值。

我已经为您提供了以下代码,它将帮助您在多维数组中查找值。关注in_array() and multidimensional 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 Manual
  2. in_array() and multidimensional array

答案 1 :(得分:1)

你不能“直接”检查这个。您正在尝试比较两种类型的变量。

PHP数组是指向“多个变量”的指针。

如果我正确读取您的代码,可能您的函数osc_item_category_id返回一个整数。在这种情况下,第一个if将改为:

<?php if (in_array(osc_item_category_id(), $terreni)) { ?>

您可以在此处查看有关in_array函数的文档:http://be2.php.net/manual/en/function.in-array.php

其他,有类似的问题。您已经创建了一个多维数组(数组数组)。你需要在这个地方使用array_merge函数(检查文档:http://be2.php.net/manual/en/function.array-merge.php),以创建一个包含另一个值的所有值的唯一数组。然后,您可以检查第一个示例:

$tuttenoterreni = array_merge($appartamenti, $case, $casevacanze, $uffici, $garage, $cantine);

<?php } else if (in_array(osc_item_category_id(), $tuttenoterreni)) { ?>

答案 2 :(得分:0)

如果osc_item_category_id()函数返回no。 121,122用户将此功能进行比较。

<?php 
    $in_id = osc_item_category_id();
    if(in_array($in_id,$terreni)){
       echo $custom_field_value['dimensioni-terreni'];
    }
?>

答案 3 :(得分:0)

in_array()函数在数组中搜索特定值。

注意:如果search参数是字符串且type参数设置为TRUE,则搜索区分大小写。

<强>语法: in_array(搜索,阵列,类型)

示例:

$people = array("Peter", "Joe", "Glenn", "Cleveland");
if (in_array("Glenn", $people)){
  echo "Match found";
}

答案 4 :(得分:0)

使用此功能 bool in_array(value,array)

此函数返回true表示数组中存在值

因此,修改代码中if和else if条件的内容,例如:

if(in_array(osc_item_category_id(),$ terreni))

我在你的代码中注意到的是,在elseif部分你试图将osc_item_category_id()返回的数值与数组&#39;数组中的值进行比较,而在&#39中;如果&#39;条件是您将osc_item_category_id()返回的值与&#39; array&#39;中的值进行比较。

如果是事实那么在elseif部分你需要运行一个foreach循环,比较&#39; osc_item_category_id()&#39;返回的值。使用上面的&#39; in_array()&#39;方法

希望这有帮助!!!