经过几个小时的苦苦挣扎,尝试多种解决方案并检查基于PHP的解决方案的Stack Overflow以解决我的问题 - 我正在寻求帮助。
我想要完成的任务(通过PHP):
我的问题:
示例设置:
amenitiesArray = ['amenityX','吸烟','宠物','amenityY','amenityZ','amenityA','linens','amenityB','wifi']
如果amenitiesArray含有吸烟,请显示绿色支票。
如果amenitiesArray不含吸烟,则显示红色X.
执行以上两个步骤,检查多个其他值......如...
如果amenitiesArray包含宠物,请显示绿色支票。
如果amenitiesArray不包含宠物,则显示红色X.
我正在寻找的所有价值观:亚麻布,无线网络,宠物和吸烟。
有用的注意事项:每个产品/出租物业的amenitiesArray值都不同。 amenitiesArray可能包含也可能不包含我正在检查的值。
最终,对于每个出租物业,我都会尝试显示如下表格:http://i.imgur.com/jEnXUb6.png
使用PHP实现这一目标的最佳方法是什么?
答案 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函数。