62

小さな問題に苦しんでいます。

私は配列を持っています:

Array
(
    [0] => 
    [6] => 6
    [3] => 5
    [2] => 7
)

設定値が配列にあるかどうかを確認しています。

if(in_array(5, $array)) {
//do something
} else {
// do something else
}

問題は、配列内で値5が見つかったときに、「何かをする」ために使用するキーが本当に必要なことです。

この場合、次のように設定する必要があります。

$key = 3;

(見つかった値in_arrayからのキー)。

助言がありますか?

4

6 に答える 6

124

array_search()あなたが探しているものです。

if (false !== $key = array_search(5, $array)) {
    //do something
} else {
    // do something else
}
于 2012-08-06T22:17:44.180 に答える
18

最初の一致のキーのみが必要な場合は、次を使用しますarray_search()

$key = array_search(5, $array);
if ($key !== false) {
    // Found...
}

特定の値に一致するすべてのエントリのキーが必要な場合は、次を使用しますarray_keys()

$keys = array_keys($array, 5);
if (count($keys) > 0) {
    // At least one match...
}
于 2012-08-06T22:18:44.153 に答える
4

このhttp://www.php.net/manual/en/function.array-search.phpを使用できます

$key = array_search(5, $array)
if ($key !== false) {
...
于 2012-08-06T22:19:07.230 に答える
2

あなたが試すことができます

if(in_array(5, $array))
{
    $key = array_search(5, $array);
    echo $key;
}

このようにして、それが存在することがわかります。存在しない場合でも、その後のそのキーの操作に応じて、通知、警告、または致命的なスクリプトエラーは発生しません。

于 2012-08-06T22:19:07.023 に答える
1

代わりにarray_searchを使用したい場合があります。これは、値が見つからない場合はfalseを返し、値が見つかった場合はindexを返します。こちらの説明をご覧ください

于 2012-08-06T22:17:52.353 に答える
0

誰かがそれを必要とする場合に備えて、一連の延滞。私の場合はこれでした:

私はこのような配列を持っていました:

$myArray =

array:3 [▼
  0 => array:3 [▼
    0 => 2
    1 => 0
    2 => "2019-07-21 23:59:59"
  ]
  1 => array:3 [▼
    0 => 3
    1 => 2
    2 => "2019-07-21 23:59:59"
  ]
  2 => array:3 [▼
    0 => 1
    1 => 1
    2 => "2019-07-21 23:59:59"
  ]
]

そして、このような別のもの(オブジェクトの配列):

$Array2 = 

Collection {#771 ▼
  #items: array:12 [▼
    0 => {#1047 ▼
      +"id": 2
      +"name": "demografico"
      +"dict_key": "demographic"
      +"component": "Demographic"
      +"country_id": null
      +"created_at": null
      +"updated_at": null
    }
    1 => {#1041 ▶}
    2 => {#1040 ▶}
    etc...

OPとして、配列内の値があるキーを使用して「何かを行う」必要がありました(html phpテンプレートの値を使用します。私の場合はブレード付きのLaravelです)。私のコードでは、これを使用する必要がありました:

foreach($Array2 as $key => $item)
    if(false !== $key = array_search($item->id, array_column($myArray, 0))
    // Note that $key is overwritten
        <input type="number" class="form-control" id="{!! $item->id !!}" value="{{ $myArray[$key][1] }}">
于 2019-07-22T14:17:40.987 に答える