it-swarm.com.de

Wie benutzt man PHP in_array mit assoziativem Array?

Gibt es eine PHP-Funktion wie in_array für assoziative Arrays, die Sie mit der mysql-Funktion "mysql_fetch assoc" erhalten?

Wenn ich zum Beispiel ein $ -Array habe, das so aussieht:

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

Kann ich so etwas tun wie in_array(key,value,array)?

Oder in meinem Fall, wenn ich nach dem ID-Wert "1" suche, in_array("ID",1,$array).

Dies ist meine Lösung, kommentieren Sie es, wenn Sie denken, dass es der richtige Weg ist:

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

Versuchen Sie dies ..... Sie können diese Funktion für jede Tiefe des zugeordneten Arrays verwenden. Die einzige Einschränkung dieser Funktion besteht darin, dass der Schlüsselwert nirgendwo im Array wiederholt wird.

<?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

In Ihrem Fall frage ich mich, ob die einfache Verwendung von isset () sinnvoller ist, d.h.

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

Sie können es nicht direkt auf verschachtelten Arrays ausführen. Sie müssen es ein wenig verschachteln und dann ausführen.

<?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

Zunächst müssen Sie wissen, welcher Teil des assoziativen Arrays in der Funktion in_array als Heuhaufen verwendet werden soll. Dann können Sie in_array ohne zusätzlichen Code verwenden.

Beispiel mit Werten:

<?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>";
?>

Ergebnisse in:

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

banana : TRUE

cherry : FALSE
4
David Blanchard

Die einfache Formel mit Klasse und Methoden:

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);

Modell in Ideone

0
Ivan Ferrer