检查多个值的数组并在值存在时更改输出

时间:2017-05-23 04:28:15

标签: php arrays

经过几个小时的苦苦挣扎,尝试多种解决方案并检查基于PHP的解决方案的Stack Overflow以解决我的问题 - 我正在寻求帮助。

我想要完成的任务(通过PHP):

  1. 检查数组以查看是否存在某些值。
  2. 对于每个值 - >显示绿色复选标记图标
  3. 如果该值不存在 - > show red X icon
  4. 我的问题:

    1. 我正在执行上述步骤,检查多个值。
    2. 我正在尝试调用仅从一次收到数组数据的API端点,而不是每次检查一次。
    3. 示例设置:

      amenitiesArray = ['amenityX','吸烟','宠物','amenityY','amenityZ','amenityA','linens','amenityB','wifi']

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

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

      执行以上两个步骤,检查多个其他值......如...

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

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

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

      有用的注意事项:每个产品/出租物业的amenitiesArray值都不同。 amenitiesArray可能包含也可能不包含我正在检查的值。

      最终,对于每个出租物业,我都会尝试显示如下表格:http://i.imgur.com/jEnXUb6.png

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

4 个答案:

答案 0 :(得分:1)

只需使用class CreateCategories < ActiveRecord::Migration[5.0] def change create_table :categories do |t| t.integer :category_id t.string :category_name t.references :subcategory_id, foreign_key: true t.timestamps end end end class CreateSubcategories < ActiveRecord::Migration[5.0] def change create_table :subcategories do |t| t.integer :subcategory_id t.string :subcategory_name t.references :category_id, foreign_key: true t.timestamps end end end 我总是会检查相同的4个值(吸烟,亚麻布,无线网络,亚麻布)。对于4个值中的每一个,我需要显示绿色检查(如果它存在于数组中),或者显示红色X(如果不存在)。

根据评论,您需要使用in_array

进行操作
in_array()

答案 1 :(得分:0)

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

$intersect = array_intersect($values, $array);

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

$diff = array_diff($values, $array);

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

答案 2 :(得分:0)

我使用array_diff()将生成数组1中不在数组2中的值数组。

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

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

示例:

// 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()代替。

示例:

foreach ( $all_amenities as $amenity ) {
    if ( in_array( $amenity, $available_amenities ) ) {
        echo 'green check markup';
    } else {
        echo 'red X markup';
    }
}

答案 3 :(得分:-2)

使用PHP的in_array函数。

php.net in_array - Manual