PHP - 如果是in_array

时间:2012-07-12 11:05:14

标签: php arrays

我正在使用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方法做错了吗?

4 个答案:

答案 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";
}