1

このような配列 $box_activ があります

Array
(
    [0] => categories
    [1] => add_a_quickie
    [2] => last_viewed
    [3] => whats_new
    [4] => wishlist
)

で確認することで

in_array('categories', $box_activ)

結果はtrueです。

で確認すると、結果としてfalseになるのはなぜですか

isset($box_activ['categories'])

isset() は in_array() のよりパフォーマンスの高いメソッドだと思いました。

4

4 に答える 4

1

1つは配列内のインデックス/キーが設定されているかどうかをチェックし、もう1つは配列内のインデックス/キーのいずれかに等しい値が割り当てられているかどうかをチェックするためです。

Array
(
    [0] => categories
    [1] => add_a_quickie
    [2] => last_viewed
    [3] => whats_new
    [4] => wishlist
)

0、1、2、3、4 はインデックス/キーであり、カテゴリ、add_a_quickie などは各インデックスが持つ値です。

isset($box_activ[0])
# should then return true.

キーと値で配列をトラバースするには:

foreach($array AS $key=>$value)

PHP の配列は、文字列もインデックス/キーにできるという点で、ハッシュマップとほとんど同じように機能します。

$array['some string'] = 'some value';
echo $array['some string'];
# should print 'some value' to screen.
于 2013-10-26T19:15:24.543 に答える
0

isset($box_activ['categories'])categories要素がtryであるため、falseを返しましたisset($box_activ[0])

于 2013-10-26T19:16:34.737 に答える
0

「カテゴリ」のキーを持つ配列に値がありません。カテゴリのキーは 0 であるため、isset を使用するには、その値のキーを取得する必要があります。

$key = array_search('categories', $box_activ);

その後

isset($box_activ[$key])

配列内にカテゴリの値があることを array_search が既に確認しているため、確認する必要はありませんが、true になります。

于 2013-10-26T19:18:37.530 に答える
0

$box_activ['categories']categoriesarray 内のによってインデックス付けされた要素を取得します$box_activcategoriesは index の要素の値であるため、その要素は存在しません0

isset確かに よりも高速ですin_arrayが、in_array配列全体をループするisset必要がありますが、渡した変数をチェックするだけで済みます。

于 2013-10-26T19:15:46.267 に答える