我正在使用CodeIgniter并创建了自定义表单首选项自定义配置。在那里我有一个如下数组:
Array
(
[1] => Category 1
[2] => Category 2
[3] => Category 3
[4] => Category 4
[5] => Category 5
)
我将其传递给视图,因为var $service_categories
我想要做的就是将它与数据库中的“值”相匹配。 I.E 5.如果匹配,则在视图中显示Category 5
。目前我只是展示5
- 这对用户没有好处。
变量$service->service_category
是一个数字。
var service
产生:
Array
(
[0] => stdClass Object
(
[service_id] => 3
[organisation_id] => 2
[service_name] => Edited Service 3
[service_description] => This is service 3 provided by
[service_category] => 5
[service_metadata] => Metadata for service 3 - Edited
[service_cost] => 22.00
[service_active] => active
)
)
我目前的PHP如下:
if (in_array($service->service_category, $service_categories))
{
echo "Exists";
}
但是,Exists
未在视图中显示。它根本没有显示任何东西。
我对in_array
方法做错了吗?
答案 0 :(得分:4)
变量:$ service-> service_category是一个数字。
这正是问题所在:你的测试是看" 5"等于"类别5",显然不是。最简单的解决方案是预先添加" 5"使用"类别":
<?php
$category = 'Category ' . $service->service_category;
if (in_array($category, $service_categories)) {
echo "Exists";
}
编辑:如果您想检查数组键是否存在(因为&#39; 5&#39; =&gt;&#39;类别5&#39 ;),这可以通过isset()或array_key_exists来实现。
<?php
if (array_key_exists ($service->service_category, $service_categories )) {
echo "Exists";
}
// does the same:
if (isset ($service_categories[service->service_category] )) {
echo "Exists";
}
答案 1 :(得分:4)
in_array()
检查数组中是否存在值。所以in_array('Category 1',$ service_categories)会起作用。
但是,要检查数组中是否存在键,可以使用:
if(array_key_exists($service->service_category, $service_categories)) {
echo "Exists";
}
我想,这就是你要找的东西。
答案 2 :(得分:2)
我认为array_key_exists是您可能会搜索的功能。
答案 3 :(得分:2)
if (isset($service_categories[$service->service_category])) {
echo "Exists";
}