0

私はCodeIgniterを使用しており、カスタムフォーム設定のカスタム構成を作成しました。その中で私は次のような配列を持っています:

Array
(
  [1] => Category 1
  [2] => Category 2
  [3] => Category 3
  [4] => Category 4
  [5] => Category 5   
)

それをvarとしてビューに渡し$service_categoriesます。次に実行したいのは、データベースにある「値」と一致させることです。IE 5.一致する場合Category 5は、ビューに表示します。現時点では、表示しているだけです5-これはユーザーにとっては良くありません。

変数$service->service_categoryは数値です。

varserviceは以下を生成します:

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

4 に答える 4

4

変数:$service->service_categoryは数値です。

そして、それがまさに問題です。「5」が「カテゴリ5」と等しいかどうかを確認するためのテストですが、明らかにそうではありません。最も簡単な解決策は、「5」の前に「Category」を付けることです。

<?php
$category = 'Category ' . $service->service_category;

if (in_array($category, $service_categories)) {
   echo "Exists";
}

編集:配列キーが存在するかどうかを確認する場合(「5」=>「カテゴリ5」のため)、これは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";
}
于 2012-07-12T11:09:49.573 に答える
4

in_array()配列にが存在するかどうかを確認します。したがって、in_array('Category 1'、$ service_categories)は機能します。

ただし、キーが配列に存在するかどうかを確認するには、次を使用できます。

if(array_key_exists($service->service_category, $service_categories)) {
    echo "Exists";
}

これがあなたが探しているものだと思います。

于 2012-07-12T11:12:04.313 に答える
2

array_key_existsはあなたが検索するかもしれない関数だと思います。

于 2012-07-12T11:09:59.530 に答える
2
if (isset($service_categories[$service->service_category])) {
   echo "Exists";
}
于 2012-07-12T11:10:00.023 に答える