首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查数组是否存在多个值,如果存在值,则更改输出

检查数组是否存在多个值,如果存在值,则更改输出
EN

Stack Overflow用户
提问于 2017-05-23 04:28:15
回答 4查看 343关注 0票数 0

在绞尽脑汁数小时后,尝试多个解决方案,并检查基于PHP的解决方案的堆栈溢出--我正在寻求帮助。

我想要完成的事情(通过PHP):

  1. 检查数组是否存在某些值。
  2. 对于每个->显示绿色复选标记图标的值
  3. 如果该值不存在,则->显示红色X图标

我的问题:

  1. 我正在执行上述步骤,检查多个值。
  2. 我试图调用API端点,只从一次接收数组数据,而不是每次检查一次。

示例设置:

amenitiesArray = 'amenityX',‘吸烟’,‘宠物’,'amenityY','amenityZ',‘闭经A’,‘亚麻布’,'amenityB','wifi‘

如果amenitiesArray包含吸烟,请显示绿色支票。

如果amenitiesArray不含吸烟,则显示红色X。

执行上述两个步骤,检查多个其他values...like.

如果amenitiesArray包含宠物,请显示绿色支票。

如果amenitiesArray不包含宠物,则显示红色X。

所有我正在寻找的价值:亚麻布,无线上网,宠物和吸烟。

有用说明:每个产品/租赁属性的amenitiesArray值是不同的。amenitiesArray可能包含我正在检查的值,也可能不包含。

最后,对于每个出租的属性,我尝试显示一个如下所示的表:http://i.imgur.com/jEnXUb6.png

用PHP实现这一目标的最佳方法是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-23 04:40:54

只要使用in_array(),我总是检查相同的4个值(吸烟,亚麻布,wifi,亚麻布)。对于这4个值中的每一个,我需要在数组中显示绿色检查,如果不存在,则显示红色X。

根据注释,您需要使用in_array做什么

代码语言:javascript
复制
`$amenitiesArray = ['amenityX', 'smoking', 'pets', 'amenityY', 'amenityZ', 'amenityA', 'linens', 'amenityB', 'wifi'] //from api`

 $your_data = ['smoking','pets','linens','wifi'];

echo "<table boder='1px'>";
echo "<thead>";
echo "<tr><th>column1</th><th>colum2</th></tr>";
echo "</thead>";
echo "<tbody>";
foreach($your_data as $row)
{

    echo "<tr><td>".$row."</td>";

    if(in_array($row,$amenitiesArray))
     {
           echo "<td>green icon html</td>";
      }
      else
      {
          echo "<td>red icon html</td>";
      }
      echo "</tr>";
} 

  echo "</tbody>";
  echo "</table>";
票数 1
EN

Stack Overflow用户

发布于 2017-05-23 04:37:16

假设$values包含要在$array中检查的所有值:

代码语言:javascript
复制
$intersect = array_intersect($values, $array);

...$intersect包含两个数组中都存在的值,您可以在其上循环并用绿色复选标记回显它们。

代码语言:javascript
复制
$diff = array_diff($values, $array);

...$diff包含存在于第一个数组中的值,但不包含第二个数组中的值,您可以在其上循环并用十字标记回显它们。

票数 0
EN

Stack Overflow用户

发布于 2017-05-23 04:39:44

我使用array_diff(),它将从数组1生成一个值数组,这些值不在数组2中。

数组1将是要检查的值的列表。数组2将是要测试的数组。

计算数组中的任何值,即array_diff()的返回值,都将是红色X。数组2中的任何值都将是绿色检查。

示例:

代码语言:javascript
复制
// This should be an array of all values you need to test for.
$all_amenities = [ 'smoking', 'pets', 'xyz' ];
$available_amenities = [ 'pets' ];

$not_available = array_diff( $all_amenities, $available_amenities );

// loop through $available_amenities and output your green checks
// loop through $not_available and output red X

但是,如果您需要将这些项目按当前顺序保存,则可以使用in_array()

示例:

代码语言:javascript
复制
foreach ( $all_amenities as $amenity ) {
    if ( in_array( $amenity, $available_amenities ) ) {
        echo 'green check markup';
    } else {
        echo 'red X markup';
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44125810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档