配列にkey =>値があるかどうかを調べるにはどうすればよいですか?キー=>配列のペアを検索するphp関数はありますか?
たとえば、次の配列にあります。[uid] => 10が存在するかどうかを知りたいです。
Array (
[0] => Array (
[name] => a
[uid] => 1
)
[1] => Array (
[name] => b
[uid] => 2
)
)
配列にkey =>値があるかどうかを調べるにはどうすればよいですか?キー=>配列のペアを検索するphp関数はありますか?
たとえば、次の配列にあります。[uid] => 10が存在するかどうかを知りたいです。
Array (
[0] => Array (
[name] => a
[uid] => 1
)
[1] => Array (
[name] => b
[uid] => 2
)
)
in_array
とarray_search
仕事::
$result = array_intersect($your_array, $array_to_search);
は、結果要素をカウント
$a = array(
array('id' => 10),
array('id' => 11),
array('id' => 12),
array('id' => 13),
array('id' => 14),
);
var_dump(in_array(array('id' => 14), $a)); // true
var_dump(in_array(array('id' => 99), $a)); // false
var_dump(array_search(array('id' => 14), $a)); // 4
var_dump(array_search(array('id' => 99), $a)); // false
$foundAt = null;
foreach($yourArray as $index => $pair){
if($pair['uid']===10){
$foundAt = $index;
break;
}
}
echo $foundAt;
$foundAt
それが見つかった場合は、何も見つからなかった場合null
こと、および整数ます。
具体的な組み込み関数はありません。ここではarray_walk
が便利だと思っていました。
foreach($array as $index => $data){
if ($data['uid'] === 10){
echo $index;
break;
}
}
には組み込み関数がありませんが、あなたはこのようなものを使用することができます。
は、お好みのキーと値を持つ配列を作成します。
if (count(array_intersect($your_array, array("uid" => 10))) > 0)
// pair exists
は、上記の文を破壊:
$array_to_search = array("uid" => 10);
array_intersect()
は、配列の共通項を取得する:ネストされた配列を持つだけで罰金
if (count($result) > 0)
// pair exists
あなたの質問を編集したとし、テストする各要素の中にさらに多くの値がありますが、array_intersect_assoc
が気になりました。各要素があなたが探しているキーを含んでいてはならない場合を処理します。
基本的には、要素と針の交点が針の場合、要素が一致します。
この比較は、各要素ごとに適用する必要があります。 foreach
となります。見つからない場合は、関数に包まれている機能は、キーとFALSE
を返すことができます。
function array_search_array(array $haystack, array $needle)
{
foreach($haystack as $key => $element)
{
if ($needle == array_intersect_assoc($element, $needle))
return $key;
}
return FALSE;
}
機能の命名は、私は認めなければならない最適ではありません。 Demo
$needle
の順序にかかわらず、複数の値を検索する必要がある場合にも同様に機能します。
単一のキーと値のペアを検索するだけであれば、そのキーにアクセスする前にキーを確認する必要があります。これは、answer by Tomのコード例の変更です。
$foundAt = null;
foreach($yourArray as $index => $pair)
{
if(isset($pair['uid']) && $pair['uid'] === 10)
{
$foundAt = $index;
break;
}
}
echo $foundAt;
いいえ組み込み関数はありません。あなたは自分で書く必要があります。 –
ここをクリックhttp:// stackoverflow。com/questions/4128323/in-array-and-multidimensional-array – Gowri
@Felix Kling: 'in_array'はどうですか? – hakre