web-dev-qa-db-ja.com

連想配列でPHP in_arrayを使用する方法は?

Mysql関数「mysql_fetchassoc」によって取得する連想配列用のin_arrayなどのphp関数はありますか?

たとえば、次のような$ arrayがある場合:

_array(0=>(array(ID=>1, name=>"Smith"), 1=>(array(ID=>2, name=>"John"))
_

in_array(key,value,array)?のようなことはできますか

または、私の場合、「1」のID値を探している場合は、in_array("ID",1,$array)です。

これが私の解決策です。正しい方法だと思われる場合はコメントしてください。

_function in_assoc_array($key,$value,$array)
{
    if (empty($array))
        return false;
    else
    {
        foreach($array as $a)
        {
            if ($a[$key] == $value)
                return true;
        }
        return false;
    }
}
_
6
Jacob Cohen

これを試してください.....この関数は、関連する配列の任意の深さに使用できます。この関数とは対照的に、キー値は配列内のどこにも繰り返されません。

<?php 
function is_in_array($array, $key, $key_value){
      $within_array = 'no';
      foreach( $array as $k=>$v ){
        if( is_array($v) ){
            $within_array = is_in_array($v, $key, $key_value);
            if( $within_array == 'yes' ){
                break;
            }
        } else {
                if( $v == $key_value && $k == $key ){
                        $within_array = 'yes';
                        break;
                }
        }
      }
      return $within_array;
}
$test = array(
                0=> array('ID'=>1, 'name'=>"Smith"), 
                1=> array('ID'=>2, 'name'=>"John")
        );
print_r(is_in_array($test, 'name', 'Smith'));
?>
9
user3270303

あなたの場合、isset()を使用する方が理にかなっているのではないかと思います。

isset($a[$key])
25
Phil LaNasa

ネストされた配列で直接実行することはできません。少しネストしてから実行する必要があります。

<?php
$arr=array(0=>array('ID'=>1, 'name'=>"Smith"), 1=>array('ID'=>2, 'name'=>"John"));

foreach($arr as $arr1)
{
    if(in_array(1,$arr1))
    {
       echo "Yes found.. and the correspoding key is ".key($arr1)." and the employee is ".$arr1['name'];
    }
}

OUTPUT :

Yes found.. and the correspoding key is ID and the employee is Smith
9

まず、in_array関数でhaystackとして使用する連想配列の部分を知っておく必要があります。その後、追加のコードなしでin_arrayを使用できます。

値の例:

<?php
$assoc = array(1 => "Apple", 2 => "banana", 3 => "lemon", 4 => "pear");
$haystack = array_values($assoc);
echo "<p>" . print_r($assoc, true) . "</p>";

$needle = 'banana';
$find = (in_array($needle, $haystack)) ? 'TRUE' : 'FALSE';
echo "<p>$needle : $find</p>";

$needle = 'cherry';
$find = (in_array($needle, $haystack)) ? 'TRUE' : 'FALSE';
echo "<p>$needle : $find</p>";
?>

結果:

Array ( [1] => Apple [2] => banana [3] => lemon [4] => pear )

banana : TRUE

cherry : FALSE
4
David Blanchard

クラスとメソッドを使用したサンプル式:

class VerifyInArray
{
 public function getMyCollection($field, $collection)
 {
     $list = array();
     if (count($collection)) {
        foreach ($collection as $k => $val) {
            $list[] = $val[$field];
        }
     }
     return $list;
 }

public function inMyArray($collection, $field, $findValue)
{
    if (isset($collection[0])) {
        if (array_key_exists($field, $collection[0]) == false) {
           return 'no'; 
        }
    }

    if (in_array($findValue, $this->getMyCollection($field, $collection))) {
        return 'ok';
    }
    return 'no';
}

public function displayInArray($collection, $attr, $value)
{
   return 'search result: '. $this->inMyArray($collection, $attr, $value);
}

}
$src = new VerifyInArray();

 $collection = array(
         array(
               'ID' => 1, 
               'name' => 'Smith'
         ), 
         array(
               'ID' => 2, 
               'name' => 'John'
         )
    );
echo $src->displayInArray($collection, 'ID', 2). "\n<br>" .
     $src->displayInArray($collection, 'ID', 0);

ideoneのモデル

0
Ivan Ferrer